Prevent Activity Stack from being Restored?
当应用程序的进程被终止时,将保存其活动堆栈。然后,当重新启动应用程序时,我的所有活动都会恢复并运行为空指针。我宁愿让我的应用程序从基本活动开始而不是尝试重新创建活动堆栈,而不是修改每个活动以适应此事件。
这可能吗?
我知道Intent.FLAG_ACTIVITY_CLEAR_TOP,但据我所知,只会在重新创建后杀死活动。
编辑:是clearTaskOnLaunch我想要什么?我已将其添加到我的默认活动中,但看不到任何效果。但即使我只是最小化应用程序,这也会扼杀我的活动,不是吗?如果整个过程重启,我宁愿只清除堆栈。
编辑2:不,这不是我想要的 - 一位Android工程师对如何使用ClearTaskOnLaunch的一些问题做出了彻底的回应:http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f/ab1e2b35c360cb65 ?PLI = 1
我能找到的唯一解决方案是在onCreate()的每个实例中检查一个全局静态变量,并在该变量重置为null时完成,表明任务已重新启动。 我将所有活动关闭到我的根活动并重新开始。
很快,我希望我的应用程序可以在onPause()中保存所需的值,但是直到那时这是我知道使用丢失初始化的唯一可靠方法...
我用这段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class NoRestoreActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // Shoul be always NULL when created the first time, just in case... if (savedInstanceState != null && savedInstanceState.getInt("SavedInstance") > 0) { // ----- Your prefferred way to kill an application ---- try { this.finishActivity(0); } catch (Exception ee) { } try { android.os.Process.killProcess(android.os.Process.myPid()); System.exit(10); } catch (Exception eeee) { } return; } super.onCreate(savedInstanceState); } @Override protected void onSaveInstanceState (Bundle outState){ super.onSaveInstanceState(outState); outState.putInt("SavedInstance",1); } } |
这是处理原生Android工具时应该考虑的事情,还是第三方任务杀手引发的问题? 至少在模拟器上使用"强制停止"似乎重置了活动堆栈 - 这是我期望在应用程序死亡时总是发生的事情。