Android Activity的生命周期让我有点头疼。
我想在应用程序进入后台之前存储显示的最后一个Activity,这样我就可以在用户恢复应用时恢复正确的状态。 问题是,为什么应用程序进入后台并且并非所有操作都执行相同的操作有多种可能性。
为了清楚起见,假设我有3个活动; A-1,A-2和A-3(A-2是进入A-3)。 A-2和A-3只是正常活动,但A-1是各种调度员。它是清单文件中的启动器活动,它唯一的功能是读取SharedPreference
其他两个在onPause()
方法中设置的this.finish()
,它基本上表示最后一个活动是什么,并激活该活动然后拨打onPause()
。直截了当。
场景是(在所有这些用户从后台进程列表或启动器重新启动应用程序之后):
onDestroy()
,然后运行onPause()
。onSavedInstanceState()
,然后是onPause()
。现在在每种情况下都会发生以下情况:
onSavedInstanceState
中设置的首选项并按原样启动A-3。按设计工作(但可能不是最佳方式)。我的问题是,在这种情况下如何最好地管理应用程序状态?
在应用程序运行时,传递到{{1}}的捆绑包是否仍然存在,因此这只是在“会话”期间保存此类信息的最佳方式
答案 0 :(得分:0)
如果我理解你需要什么,那么你可以简单地覆盖A-3的onBackPressed(),以便修改SavedPreferences,当用户重新启动应用程序时,它将打开A-3。
在第二种情况下,您不需要保存任何内容,因为应用程序未关闭,它只放在后台。当用户重新进入应用程序时,操作系统将自动重新激活上一个活动活动 - A-3。
案例3& 4(可能在它被放入后台,如案例2),如果应用程序被强制杀死,那么你就不会修改SavedPreferences,因为用户没有点击回来。