Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4587c32a authored by Charles Tsai's avatar Charles Tsai Committed by Steve Kondik
Browse files

Use isolated thread to perform onStart()

isUsbMassStorageConnected() may take longer time to return.
It causes system UI get ANR.
Use an isolated thread to avoid blocking.

Change-Id: Ib4e4aeca2511a7378e7766f9e5217ded5841db93
parent ae578639
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ public class StorageNotification extends SystemUI {
    private StorageManager mStorageManager;

    private Handler        mAsyncEventHandler;
    private Handler        mStartupHandler;

    private class StorageNotificationEventListener extends StorageEventListener {
        public void onUsbMassStorageConnectionChanged(final boolean connected) {
@@ -88,6 +89,19 @@ public class StorageNotification extends SystemUI {

    @Override
    public void start() {
        HandlerThread startupThread = new HandlerThread("SystemUI StorageNotification Startup");
        startupThread.start();
        mStartupHandler = new Handler(startupThread.getLooper());

        mStartupHandler.post(new Runnable() {
            @Override
            public void run() {
                startAsync();
            }
        });
    }

    private void startAsync() {
        mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
        final boolean connected = mStorageManager.isUsbMassStorageConnected();
        if (DEBUG) Log.d(TAG, String.format( "Startup with UMS connection %s (media state %s)",