summaryrefslogtreecommitdiff
path: root/packages/ExternalStorageProvider
diff options
context:
space:
mode:
authorZim <zezeozue@google.com>2020-05-01 15:54:55 +0100
committerZim <zezeozue@google.com>2020-05-01 19:40:09 +0100
commit5631b6e63ac1777e06f2f30b81ec99e6d4175e63 (patch)
tree1ec0cc03dbc363ce559ca6f7f802e018185a3cef /packages/ExternalStorageProvider
parent33696c1cca08c3e2cc896edb292e3e335005fbfb (diff)
Update ExternalStorageProvider volumes with StorageEventListener
We were listening to volume state changes in the ExternalStorageProvider with the VOLUME_STATE_CHANGED broadcast in the MountReceiver. This broadcast can be severly delayed especially on user startup so we also listen with the StorageEventListener which is more performant. Test: Manual Bug: 154332660 Change-Id: I93c43f3b53c0a71cd6aa7cf594fe6988f4bc3f6e
Diffstat (limited to 'packages/ExternalStorageProvider')
-rw-r--r--packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index f1ec606243c4..9f92eb4c007c 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -32,6 +32,7 @@ import android.os.IBinder;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.DiskInfo;
+import android.os.storage.StorageEventListener;
import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.provider.DocumentsContract;
@@ -119,6 +120,14 @@ public class ExternalStorageProvider extends FileSystemProvider {
mUserManager = getContext().getSystemService(UserManager.class);
updateVolumes();
+
+ mStorageManager.registerListener(new StorageEventListener() {
+ @Override
+ public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState) {
+ updateVolumes();
+ }
+ });
+
return true;
}