diff options
author | Zim <zezeozue@google.com> | 2020-05-01 15:54:55 +0100 |
---|---|---|
committer | Zim <zezeozue@google.com> | 2020-05-01 19:40:09 +0100 |
commit | 5631b6e63ac1777e06f2f30b81ec99e6d4175e63 (patch) | |
tree | 1ec0cc03dbc363ce559ca6f7f802e018185a3cef /packages/ExternalStorageProvider/src | |
parent | 33696c1cca08c3e2cc896edb292e3e335005fbfb (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/src')
-rw-r--r-- | packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java | 9 |
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; } |