Android如何可靠地重启应用程序

时间:2015-03-06 11:08:42

标签: android

以下是我如何杀死该应用并再次启动它

Intent mStartActivity = new Intent(this, InitialActivity.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(this, mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 500, mPendingIntent);
android.os.Process.killProcess(android.os.Process.myPid());

有些设备显然无法杀死应用程序,然后在500毫秒内启动它,用户看到黑屏。 是否有更好,更可靠的方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

我已经非常可靠地使用以下代码,无需等待500毫秒,也允许您在需要某些特定动画时调用overridePendingTransition

   public static void restart(Activity activity) {
      Intent intent = new Intent(activity, <your main activity>.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
      activity.startActivity(intent);
   }

答案 1 :(得分:0)

开始一项新活动,我们称之为SuicideActivity。

在SuicideActivity中,只需调用System.exit()。

JVM将停止,系统将重新启动您的应用程序,但在父活动中。 在SuicideActivity里面你可能需要延迟自杀,比如

onCreate(Bundle savedInstanceState) {
   runOnUiThread(new Runnable() { public void run() { System.exit(0); }});
}