如何防止应用在睡眠时被杀死?


11

我有一个Droid2。我有一个很长的资源密集型游戏(幽灵般的灵魂),我想在不使用手机时保持运行状态。如果我按下Android的“主页”按钮以返回主屏幕,然后立即重新启动游戏,那将是我停下的位置。如果我按下电源按钮进入睡眠状态,然后立即打开电话,解锁并重新启动游戏,则同样如此。

如果我将其放置一段时间(几个小时),那么当我返回并启动游戏时,它会像从未运行过一样重新开始。尽管同步功能已开启,但该手机尚未用于任何用途。

我的问题是双重的:我如何才能获得有关哪些应用程序在何时何地被杀死的更多信息,以及如何对其进行设置以允许该应用程序继续运行?我不需要它在后台执行任何操作,我只希望它回来时仍然存在。

我熟悉需要清除Android内存的概念,并且不需要任务杀手,但是我希望它不会杀死该任务,除非我真正退出它。


我假设您无权访问实际代码?
Nanne 2011年

正确,这些是从应用商店购买的封闭源应用。
詹森·维尔斯

Answers:


2

我很确定这不是android默认设计中的一个选项。我从来没有亲眼看到过用于此类事情的应用程序,因为大多数人都希望关闭程序以保持手机速度。这是android系统正在关闭未使用的程序。应用程序的创建者必须设计一项服务,以使其在后台运行,或者始终保持计算或音频状态,以便系统认为该程序正在做某事。那会耗尽您的电池电量。


虽然您的第一句话和第三句话绝对正确,但其他句子却不正确。
迈克尔

2

建议:使用Tasker来禁用应用程序的屏幕超时。这可能会阻止它进入后台。


我会看看并尝试一下,谢谢!我会记下任何成功或失败的信息。
詹森·

我可以确认在Tasker中更改屏幕超时不会阻止该应用被杀死。还是)感谢你的建议。
詹森·维尔斯

1
等等,这不会阻止屏幕关闭吗?这样浪费电池吗?
2013年

2

对于您的问题的第一部分;

我如何获得有关何时终止以及为何终止哪些应用程序的更多信息?

Android SDK在Android内存上有一个快速的总结http://developer.android.com/guide/topics/fundamentals.html

默认情况下,每个应用程序都在其自己的Linux进程中运行。当需要执行任何应用程序组件时,Android会启动该进程,然后在不再需要该进程或系统必须为其他应用程序恢复内存时关闭该进程。

因此,当Android确定您不使用它(我在应用程序中单击quit)或资源耗尽时,可以有效地概括为杀死程序。例如,如果您有512 MB的ram和10个免费内存,并且您启动的应用程序需要12个,它将尝试确定可以从中获取12个应用程序的最少使用的应用程序。

它往往做得很好(至少以我的经验)。您可能可以从游戏中回家,并做几件事,但在第三件事上,它将退出游戏。请记住,特别是资源密集型游戏的性能如何,因此很可能会很快杀死该应用程序,而不是稍后。

现在它消失了的原因是,您可能已尝试启动同步进程并争夺资源。此时,应用程序的内存页面很少被访问,因此对于操作系统认为有必要进行的任何内存回收,这都是公平的游戏。

关于第二个问题;

如何设置它以允许该应用程序继续运行?

我不使用任务杀手,但是我敢肯定,好的杀手(好像ATK是领导者https://market.android.com/details?id=com.rechild.advancedtaskkiller&feature=search_result)有一个例外清单。可以将所需的游戏列入白名单,并将其他进程列入黑名单。

我也不熟悉这个游戏,所以我不确定具有什么自动保存功能。希望我能有所帮助。


1

如何获得更多信息,哪些应用程序被杀死,为什么?

您可以将手机连接到adb;然后打开logcat ; 将输出保存到文件。
在日志文件中,您将有大量信息;通过搜索您的应用名称;您可以找出它何时被杀死。

您可以采取什么措施防止它被android系统阻止?
我不知道; 希望rAndy的答案会起作用。
然而; 我会与开发人员联系并告诉他问题,因为他/她应该有最简单的时间来解决它


我正要提到logcat解决方案。只是要补充一下,您也需要寻找ActivityManager(它是android内部的“任务杀手”)。您无法阻止android杀死应用。Android的想法是,如果一个应用程序进程被完全杀死,则该应用程序应该能够恢复其先前状态。因此,应用程序开发人员必须确保您不要从头开始游戏。
流动
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.