From 5631b6e63ac1777e06f2f30b81ec99e6d4175e63 Mon Sep 17 00:00:00 2001 From: Zim Date: Fri, 1 May 2020 15:54:55 +0100 Subject: [PATCH] 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 --- .../android/externalstorage/ExternalStorageProvider.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java index f1ec606243c44..9f92eb4c007ca 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; }