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

Commit 163c28b5 authored by Joe Onorato's avatar Joe Onorato Committed by Android (Google) Code Review
Browse files

Merge "Managed dialogs should run on the same thread as their activity." into gingerbread

parents 40684946 c7f8b6fc
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ public class UsbStorageActivity extends Activity
    private static final int DLG_CONFIRM_KILL_STORAGE_USERS = 1;
    private static final int DLG_ERROR_SHARING = 2;
    static final boolean localLOGV = false;
    private boolean mDestroyed;

    // UI thread
    private Handler mUIHandler;
@@ -136,6 +137,12 @@ public class UsbStorageActivity extends Activity
        mProgressBar = (ProgressBar) findViewById(com.android.internal.R.id.progress);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mDestroyed = true;
    }

    private void switchDisplay(final boolean usbStorageInUse) {
        mUIHandler.post(new Runnable() {
            @Override
@@ -232,10 +239,17 @@ public class UsbStorageActivity extends Activity
        return null;
    }

    private void showDialogInner(int id) {
    private void scheduleShowDialog(final int id) {
        mUIHandler.post(new Runnable() {
            @Override
            public void run() {
                if (!mDestroyed) {
                    removeDialog(id);
                    showDialog(id);
                }
            }
        });
    }

    private void switchUsbMassStorage(final boolean on) {
        // things to do on the UI thread
@@ -276,7 +290,7 @@ public class UsbStorageActivity extends Activity
        IMountService ims = getMountService();
        if (ims == null) {
            // Display error dialog
            showDialogInner(DLG_ERROR_SHARING);
            scheduleShowDialog(DLG_ERROR_SHARING);
        }
        String extStoragePath = Environment.getExternalStorageDirectory().toString();
        boolean showDialog = false;
@@ -294,11 +308,11 @@ public class UsbStorageActivity extends Activity
            }
        } catch (RemoteException e) {
            // Display error dialog
            showDialogInner(DLG_ERROR_SHARING);
            scheduleShowDialog(DLG_ERROR_SHARING);
        }
        if (showDialog) {
            // Display dialog to user
            showDialogInner(DLG_CONFIRM_KILL_STORAGE_USERS);
            scheduleShowDialog(DLG_CONFIRM_KILL_STORAGE_USERS);
        } else {
            if (localLOGV) Log.i(TAG, "Enabling UMS");
            switchUsbMassStorage(true);