From 1141611f911f853da424d9b0d8ebbce8800aa2b4 Mon Sep 17 00:00:00 2001 From: cretin45 Date: Tue, 12 Jan 2016 14:43:36 -0800 Subject: [PATCH] SetupWizard: Don't disable packages on main thread Issue-id: YAM-69 Change-Id: I81ea039a7444d3db5d97b1d798bffe9a6b8ec498 --- .../setupwizard/ui/SetupWizardActivity.java | 37 +++++++++++++++---- .../setupwizard/util/SetupWizardUtils.java | 2 +- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java index 77efb96..81121fa 100644 --- a/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java +++ b/src/com/cyanogenmod/setupwizard/ui/SetupWizardActivity.java @@ -26,6 +26,7 @@ import android.content.res.Resources; /*import android.content.res.ThemeManager;*/ import android.graphics.Bitmap; import android.graphics.Point; +import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; @@ -425,18 +426,40 @@ public class SetupWizardActivity extends Activity implements SetupDataCallbacks tm.removeClient(SetupWizardActivity.this);*/ SetupStats.sendEvents(SetupWizardActivity.this); SetupWizardUtils.disableGMSSetupWizard(SetupWizardActivity.this); - Intent intent = new Intent(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_HOME); - startActivity(intent); final WallpaperManager wallpaperManager = WallpaperManager.getInstance(SetupWizardActivity.this); wallpaperManager.forgetLoadedWallpaper(); } }); - for (Runnable runnable : mFinishRunnables) { - runnable.run(); + new FinishTask(this, mFinishRunnables).execute(); + } + + private static class FinishTask extends AsyncTask { + + private final SetupWizardActivity mActivity; + private final ArrayList mFinishRunnables; + + public FinishTask(SetupWizardActivity activity, + ArrayList finishRunnables) { + mActivity = activity; + mFinishRunnables = finishRunnables; + } + + @Override + protected Boolean doInBackground(Void... params) { + for (Runnable runnable : mFinishRunnables) { + runnable.run(); + } + SetupWizardUtils.disableSetupWizard(mActivity); + return Boolean.TRUE; + } + + @Override + protected void onPostExecute(Boolean aBoolean) { + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + mActivity.startActivity(intent); + mActivity.finish(); } - finish(); - SetupWizardUtils.disableSetupWizard(SetupWizardActivity.this); } } diff --git a/src/com/cyanogenmod/setupwizard/util/SetupWizardUtils.java b/src/com/cyanogenmod/setupwizard/util/SetupWizardUtils.java index 4918b11..67671d3 100644 --- a/src/com/cyanogenmod/setupwizard/util/SetupWizardUtils.java +++ b/src/com/cyanogenmod/setupwizard/util/SetupWizardUtils.java @@ -261,7 +261,7 @@ public class SetupWizardUtils { private static void disableComponent(Context context, ComponentName component) { context.getPackageManager().setComponentEnabledSetting(component, - PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } private static void enableComponentArray(Context context, ComponentInfo[] components) {