应用重启时如何从 root activity 而不是 sub activity 启动?
How to start from root activity not from sub activity when app restart?
当我在 sub activity 时任务杀手杀死应用程序后,如果我重新启动应用程序,它从 sub activity 启动并崩溃。
当应用程序重新启动时,如何从 root activity 而不是从 sub activity 启动?
这可能有效:
在你的子 Activity 的 onStop 和 onDestroy 中,输入以下代码
Intent intent = getIntent();
intent = null;
最简单的方法是添加
android:clearTaskOnLaunch="true"
到 "root" activity 清单中的 activity
定义(ACTION=MAIN 和 CATEGORY=DEFAULT)。
但是,如果用户离开它然后 returns 它总是会从头开始你的应用程序(即使 Android 没有终止你的应用程序的进程)。
一个更复杂的方法是使用一个 public static boolean
变量,您在 "root" activity 的 onCreate()
中将其设置为 true
。如果这个变量是true
,那就意味着你的"root"activity已经启动了。然后,您需要在所有其他活动的 onCreate()
中测试此标志,如果变量是 false
,则意味着 Android 终止了您的进程并重新创建了它并启动了另一个 activity(不是 "root" activity)。在这种情况下,您应该像这样重定向回 "root" activity:
Intent intent = new Intent(this, MyRootActivity.class);
startActivity(intent);
finish();
return;
当我在 sub activity 时任务杀手杀死应用程序后,如果我重新启动应用程序,它从 sub activity 启动并崩溃。 当应用程序重新启动时,如何从 root activity 而不是从 sub activity 启动?
这可能有效: 在你的子 Activity 的 onStop 和 onDestroy 中,输入以下代码
Intent intent = getIntent();
intent = null;
最简单的方法是添加
android:clearTaskOnLaunch="true"
到 "root" activity 清单中的 activity
定义(ACTION=MAIN 和 CATEGORY=DEFAULT)。
但是,如果用户离开它然后 returns 它总是会从头开始你的应用程序(即使 Android 没有终止你的应用程序的进程)。
一个更复杂的方法是使用一个 public static boolean
变量,您在 "root" activity 的 onCreate()
中将其设置为 true
。如果这个变量是true
,那就意味着你的"root"activity已经启动了。然后,您需要在所有其他活动的 onCreate()
中测试此标志,如果变量是 false
,则意味着 Android 终止了您的进程并重新创建了它并启动了另一个 activity(不是 "root" activity)。在这种情况下,您应该像这样重定向回 "root" activity:
Intent intent = new Intent(this, MyRootActivity.class);
startActivity(intent);
finish();
return;