最简单的Android活动生命周期

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().这些不是生命周期方法.

所有这些方法都有很好的记录.请仔细阅读本文档.

为了进一步澄清事情,这里有几个现实场景:

  1. 活动正在运行,其他活动就在它之上,onPause被称为.系统耗尽内存,调用onSaveInstanceState,杀死活动.用户按下了几次,必须重新实例化活动(最好使用保存的数据onSaveInstanceState).
  2. 活动正在运行,用户按下.此时onPause->onDestroy被称为,没有打电话onSaveInstanceState.

你应该了解onPause和之间的本质区别onSaveInstanceState.始终调用前者,而后者仅在将来可能重新实例化活动实例 时调用.按照这一思路,您的用户将期待两件事:

  1. 当他们离开你的Activity并稍后返回它时,他们希望它在他们离开它的完全相同的实例中(这将使用onSaveInstanceState).如果他们退出您的活动,他们不会期望.然而:
  2. 他们希望他们输入的数据将被保留(将在其中完成onPause).例如,如果他们开始撰写邮件,那么即使他们退出活动,他们也会在下次回来时将其视为草稿.

你应该了解这些方法如何应该为了得到你的用户希望使用.您实际使用它们的方式取决于您,您的需求和应用程序的性质.