我有一项活动可以为结果启动其他活动,因此当结果返回时,活动可能已经或可能没有被销毁和重新创建。
我重写了onSaveInstanceState,以便添加需要保存和恢复的数据。
当活动被销毁并重新创建时,onCreate将传递savedInstanceState包;但也 onRestoreInstanceState()被调用并传递相同的包。
那么我应该在哪里放置从bundle中提取数据的代码并恢复状态?在onCreate或onRestoreInstanceState中?保证后者始终被称为吗?
是否可以在不调用onCreate的情况下调用onRestoreInstanceState? (例如,如果活动停止并重新启动但未被销毁和重新创建)?
答案 0 :(得分:10)
“而不是在onCreate()期间恢复状态,你可以选择实现onRestoreInstanceState(),系统在onStart()方法之后调用。只有当存在要恢复的保存状态时,系统才会调用onRestoreInstanceState(),所以你不需要检查Bundle是否为NULL“
以下链接非常清楚地解释了重启活动。
答案 1 :(得分:0)
Android在onStart()和onResume()生命周期方法之间调用onRestoreInstanceState()方法。因此,为了恢复活动状态,只需实现onRestoreInstanceState()方法恢复活动状态。