diff options
| author | 2013-10-23 09:59:06 -0700 | |
|---|---|---|
| committer | 2013-10-23 09:59:06 -0700 | |
| commit | 46de7b50243d3896fe97d1ee7a00258085cea1ca (patch) | |
| tree | b08de6b0bb9c9b2e473600b50c0c7464008329ec | |
| parent | b3d42635aafacd80b1e1d257338ea6abb93d22c3 (diff) | |
Update roots when data cleared, refresh UI.
Data cleared usually means accounts went away, so kick off roots
refresh. Also update any visible UI after a refresh finishes.
Bug: 10899793
Change-Id: Id68c80b5e635e358cfd75f4961ce13cd1c7c5f82
3 files changed, 11 insertions, 2 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java index 6b46e3a0d0ec..547e343cdb0d 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java @@ -75,6 +75,7 @@ public class DocumentsApplication extends Application { packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED); packageFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); + packageFilter.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED); packageFilter.addDataScheme("package"); registerReceiver(mCacheReceiver, packageFilter); diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java index b98e1eedd7e2..f6b43c744934 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java @@ -60,8 +60,8 @@ import java.util.concurrent.TimeUnit; public class RootsCache { private static final boolean LOGD = true; - // TODO: cache roots in local provider to avoid spinning up backends - // TODO: root updates should trigger UI refresh + public static final Uri sNotificationUri = Uri.parse( + "content://com.android.documentsui.roots/"); private final Context mContext; private final ContentObserver mObserver; @@ -201,6 +201,7 @@ public class RootsCache { mStoppedAuthorities = mTaskStoppedAuthorities; } mFirstLoad.countDown(); + resolver.notifyChange(sNotificationUri, null, false); return null; } diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java b/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java index 710897103f5f..8d37cdf77adf 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java @@ -25,6 +25,8 @@ import com.android.documentsui.model.RootInfo; import java.util.Collection; public class RootsLoader extends AsyncTaskLoader<Collection<RootInfo>> { + private final ForceLoadContentObserver mObserver = new ForceLoadContentObserver(); + private final RootsCache mRoots; private final State mState; @@ -34,6 +36,9 @@ public class RootsLoader extends AsyncTaskLoader<Collection<RootInfo>> { super(context); mRoots = roots; mState = state; + + getContext().getContentResolver() + .registerContentObserver(RootsCache.sNotificationUri, false, mObserver); } @Override @@ -77,5 +82,7 @@ public class RootsLoader extends AsyncTaskLoader<Collection<RootInfo>> { onStopLoading(); mResult = null; + + getContext().getContentResolver().unregisterContentObserver(mObserver); } } |