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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user