【问题标题】:Android: Inconsistency in documentation. When may an app be killed?Android:文档不一致。什么时候可以杀死一个应用程序?
【发布时间】:2014-07-11 04:51:11
【问题描述】:

在我看来12 这些文章并不一致。文章 [1] 说,该应用程序只能在其生命周期的某些部分被杀死。文章 [2] 说它是。

哪个是对的?

[1] 寻找表格和单词“killable”。 [2] 在有关前台进程的部分中查找“它们仅作为最后手段被杀死”。

[编辑 1 个开始]

改变了我做链接的方式。感谢通过编辑我的帖子让我意识到这一点的男孩/女孩。

[编辑2结束]

【问题讨论】:

  • 我不明白他们矛盾的地方。第一篇文章说它们在生命周期的某些部分是不可杀死的。这些部分应该非常短(就在方法中花费的时间而言)。活动在列出的方法之间花费大部分时间,如第二篇文章所述,它可以随时终止。
  • 永远不应该“杀死”应用程序,您可能会完成/销毁活动或服务。系统应该是决定何时“杀死”应用程序的人

标签: android memory process kill foreground


【解决方案1】:

文章 ** 说应用程序只能在其生命周期的某些部分被杀死。

应用没有生命周期。有问题的表格是关于活动生命周期的。流程也有一个“生命周期”——在你的第二个链接中有所介绍——尽管我个人不会选择那个名词。

哪个是对的?

一般来说,两者都有,但我认为第二个链接有点过时了。 There are more process importance states,我认为“前台”服务不再与“前台”用户界面相同。 AFAIK,“前台”服务将进程移动到IMPORTANCE_PERCEPTIBLE,其优先级低于IMPORTANCE_FOREGROUND。并且,因此(和 AFAIK),具有“前台”服务但在前台没有活动的进程比在前台有活动的进程更有可能由于内存不足而终止.

【讨论】:

  • 如果一个进程被杀死(据我所知,这可能在任何时候发生,尽管在前台很少发生)那么我猜我的活动也会被杀死,无论它们生命周期的哪个部分他们在里面。这篇文章说进程是如何被“残忍地”杀死的:“一旦 Android 确定它需要删除一个进程,它就会残忍地这样做,只是强制杀死它。”,android-developers.blogspot.dk/2010/04/…
  • @eversceptic:“如果一个进程被杀死(据我所知,这可能在任何时候发生,尽管在前台很少发生)那么我猜我的活动也会被杀死,无论是哪个部分它们所处的生命周期”——是的,记住它们生命周期的某些部分仅在它们处于前台时发生。因此,您的第一个链接中的“可杀死”列。
  • 我说得对吗?您是在说,“由于 Activity 仅在它不在前台的状态下是可杀死的,因此一个进程也隐含地也只能在前台没有活动的情况下被杀死”?你可能是对的,但是服务呢? AsyncTask 等可能正在运行?
  • @eversceptic:“那么服务呢?” -- 它们还会影响我在回答中链接到的过程重要性状态。
  • 是的,它们会影响优先级/重要性,但我相信 Android 可能随时杀死所有进程(我知道,很少,但不能保证)。我意识到我的问题已经得到解答,因为它确实是关于“应用程序”/“进程”/“活动”的差异。如果您想进一步帮助我,我认为我们应该继续作为我的另一个问题的一部分,这个问题现在更相关link。 PS:无法让这个@-stuff 工作。
猜你喜欢
  • 2023-03-19
  • 2013-08-05
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多