我们的大多数活动都会访问特定于用户的模型。所有这些活动都继承自ModelActivity基类,该基类提供getModel()调用。当其中一个活动检测到用户已注销(通过AccountManager回调)时,它会坚持其现有模型,但通过使用FLAG_ACTIVITY_CLEAR_TOP启动其意图,准备退回到根活动(非用户特定)。
但是,如果用户在应用未运行时删除了某个帐户,则在恢复活动时会遇到问题。现在,活动需要处理不存在模型,这会使代码更复杂,容易出错。
理想情况下,我们会在创建活动之前拦截应用程序还原过程。然后我们将检查是否有帐户和模型,如果没有清除已保存的活动堆栈,则从我们的根活动而不是上次保存的活动重新启动。但据我所知,第一个可以运行代码的地方是活动的onCreate回调。
当应用程序从后台保存还原时,但是在创建保存的活动之前,是否有办法运行某些代码?
答案 0 :(得分:0)
我对此并不完全确定,并且从未实现过,但您可以扩展Application.ActivityLifecycleCallbacks
并使用registerActivityLifecycleCallbacks
注册您的课程。
在Activity回调之前调用这些回调。
答案 1 :(得分:0)
我建议您实施Service
,这将在您的活动中进行观察。如果您创建新Activity
,则始终知道是否已恢复Activity