Fri*_*ave 18 lifecycle android android-activity
我注意到Android开发者活动部分自我启动应用程序以来已经更新,但我仍然不清楚最简单的活动生命周期是什么.
据我所知:
onCreate,onResume和onPause是必不可少的.
在onPause之后的任何时候都可以删除该活动,因此我应该将整个应用程序状态保存到onPause文件中,而不是依赖onStop或onDestroy.此外,onSaveInstanceState在每个onPause之前都没有被调用,因此不值得使用.
而不是尝试编写大量代码来处理所有场景,为什么不在onPause结束时销毁Activity?
然后,生命周期将在onCreate和onResume处于活动状态之前,然后onPause处于非活动状态时.不需要其他方法.
我使用onCreate调用setContentView并设置视图侦听器,但其他所有内容都将放在onResume中,包括从文件加载恢复的状态?如前所述,onPause会将状态保存到文件并销毁活动.
据我所知,这方面的唯一缺点可能是当屏幕上显示弹出窗口时,活动将被删除,并且必须在弹出窗口关闭时重新创建,这意味着活动将不会在弹出窗口后面显示(尽管我没有测试过这个)
重新启动活动可能需要更长的时间,但由于系统可能在没有任何通知的情况下删除了活动,因此无论如何都必须保存整个状态.
有什么想法吗?
更新:我想我想到的是"首页"活动所谓的游戏活动.当玩家点击"播放"时,首页活动会调用游戏活动
游戏活动将在onCreate中设置其视图和监听器等,并且在onResume中它将加载包含游戏状态的文件,或者如果不存在文件则开始新游戏.
onPause游戏,它将游戏状态写入文件,然后无论游戏活动发生什么(没有,或被停止/销毁,或其他),onResume方法将始终从文件中重新加载所有数据.
那是我在想什么,如果这有道理的话?
Update2:我已经设计了一个简单的解决方案,我已在下面的答案中记录,如果有人感兴趣的话!
它不支持Android Activity Lifecycle'Paused'和'Stopped'状态.一旦它不再显示它就会自动杀死并且必须手动重启,但它会从你离开的地方继续进行!
Fel*_*lix 31
你在找这个吗?
为了进一步回答你的问题,是的,正如你从上面的图中可以清楚地看到的那样,"最简单"(即最小数量的方法调用)生命周期确实如此onCreate(); onStart(); onResume(); onPause();.
你也应该知道onSaveInstanceState()和onRetainNonConfigurationInstance().这些不是生命周期方法.
所有这些方法都有很好的记录.请仔细阅读本文档.
为了进一步澄清事情,这里有几个现实场景:
onPause被称为.系统耗尽内存,调用onSaveInstanceState,杀死活动.用户按下了几次,必须重新实例化活动(最好使用保存的数据onSaveInstanceState).onPause->onDestroy被称为,没有打电话onSaveInstanceState.你应该了解onPause和之间的本质区别onSaveInstanceState.始终调用前者,而后者仅在将来可能重新实例化活动实例 时调用.按照这一思路,您的用户将期待两件事:
onSaveInstanceState).如果他们退出您的活动,他们不会期望.然而:onPause).例如,如果他们开始撰写邮件,那么即使他们退出活动,他们也会在下次回来时将其视为草稿.你应该了解这些方法如何应该为了得到你的用户希望使用.您实际使用它们的方式取决于您,您的需求和应用程序的性质.