我发现一个奇怪的情况取决于屏幕的关闭方式。如果Android关闭屏幕或按下电源按钮关闭屏幕,我的应用程序按预期为paused
。按下电源按钮以重新打开屏幕时,应用resumes
无问题。这种情况会持续一会儿或几十分钟过去。
这是它偏离的地方。如果my app turns the screen off
,我的应用pauses
符合预期,但我的应用也会立即被杀。
使用电源按钮重新打开屏幕时,应用程序不再运行
我已经设置了确认这一点的日志记录,但为什么行为上存在差异?
答案 0 :(得分:1)
您看到的行为实际上是预期的,Android设备中运行的每个进程都有优先级,一旦您的应用程序暂停,如果另一个具有更高优先级的进程,操作系统可能会将其删除需要记忆,根据谷歌的文档:
Android系统尝试维护as的应用程序进程 尽可能长,但最终需要删除旧进程 为新的或更重要的流程回收内存。确定哪个 要保留的进程和要杀死的进程,系统会放置每个进程 基于在其中运行的组件进入“重要性层次结构” 过程和那些组件的状态。进程最低 首先消除重要性,然后消除次低的重要性 重要性,等等,以恢复系统资源。
如前所述“基于流程中运行的组件”意味着您的应用程序可能在操作系统中排名不高,因为您可能没有运行Service等,因此最终会被杀死...
您可以查看此文档:http://developer.android.com/guide/components/processes-and-threads.html,它解释了流程生命周期,并且应该让您更好地了解如何处理它......
此外,在Android设备中使电池寿命更长的战斗中,有一个: 暂停/恢复设备上的状态。 暂停和恢复以三步顺序发生,因此最好进行讨论 一起。基本上,当设备暂停电源按钮或屏幕保护程序超时到期时,设备将暂停。如果再次按下电源按钮,它 恢复到锁定屏幕。此时,如果用户解锁了设备,则应用程序 恢复了。如果用户在没有解锁锁定屏幕的情况下等待几秒钟,那么 设备将再次暂停。
由于这显然属于低功耗状态,因此应用程序应该 已停止所有渲染和声音,可能还有任何背景 处理不是100%,以保持应用程序活着。
问候!