Android应用程序类生命周期文档

时间:2016-02-19 05:14:01

标签: android android-lifecycle

我正在尝试查找有关Android Application类生命周期的官方文档。显然,对于我在StackOverflow herehere上发现的内容,如果系统需要内存,Application类可以被杀死。即使是this教程也是如此。

但有些事情让我有点恼火:

  • 我找不到官方文档告诉我是的,Application类可以在内存不足的情况下被杀死。
  • 我找不到任何代表Application生命周期的官方图表。
  • 除了onLowMemory() Application类被杀之后,我找不到任何正确的回调。这是否意味着我必须使用此方法来保存我的数据?
  • 如果Application类在低内存压力下被杀死并且应用程序再次出现在前台,我怎么能在其onCreate()中知道在系统终止后应用程序已被重新创建?在Activity我会测试savedInstanceState,但据我所知,Application类中没有任何类似内容。

感谢您的启发。

2 个答案:

答案 0 :(得分:4)

  

我找不到官方文档告诉我是的,Application类可以在内存不足时被杀死。

以下是对其中所述内容的引用:

  

我找不到任何代表应用程序生命周期的官方图表。

这是一个合理的观察......虽然以下是基于意见的,但我最好的猜测是这样的图表会与Android的多任务“哲学”相矛盾,如上一篇参考文献所述:

“Android如何以这种方式处理应用程序的关键是流程不会干净地关闭。当用户离开应用程序时,其进程将在后台保留,允许它继续工作(对于如果需要,下载网页的示例),如果用户返回,则立即到达前台。如果设备永远不会耗尽内存,那么Android将保留所有这些进程,真正让所有应用程序“运行”所有时间“。

  

除了onLowMemory()除外,我找不到任何适当的回调函数。这是否意味着我必须使用此方法来保留我的数据?

关于描述非常简单的onLowMemory(),我们是在谈论后台进程还是前台用户界面?...

如果应用程序Activities都没有位于前台且操作系统内存不足,则可能会导致应用程序无法使Application或应用程序组件(Activity,将调用Service)回调。也就是说,(因为你正在处理Activities)我建议按照onPause()中的文档存储所有持久数据。

  

如果Application类在低内存压力下被杀死并且应用程序再次出现在前台,我怎么能在其onCreate()中知道在系统被杀后应用程序已被重新创建?

您无法在ApplicationonCreate()中识别它。

答案 1 :(得分:1)

据我所知,你无法处理应用程序被杀死的事件。以下是应用程序onTerminate方法的引用:

  

此方法适用于模拟过程环境。永远不会   在生产Android设备上调用,删除进程   简单地杀死他们;没有用户代码(包括此回调)   执行时执行。

一般的想法是你不应该关心应用程序是否被杀死。如果是,操作系统将在下次需要时重新启动应用程序,否则将恢复(并且您将使用活动/片段生命周期事件来实现此目的)。

您需要存储哪些数据 - 是否可以提前存储(从Web服务接收等等)而不是等待最后一刻?