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
This commit is contained in:
Zim
2020-05-01 15:54:55 +01:00
parent 33696c1cca
commit 5631b6e63a

View File

@@ -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;
}