Android应用程序如何在内存清理后保持运行

4
我正在尝试编写一个应用程序,需要始终运行一个后台线程。 (是的,我知道这并不推荐,但此应用程序不是为普通市场设计的,后台线程绝对是唯一的方法!)
因此,我创建了一个服务(作为新进程),在前台模式下启动它。在服务内部,我将启动一个监视系统Logcat输出的线程。
所以一切正常工作,直到有人去任务管理器然后按下“清除内存”按钮。
不幸的是,我找不到任何可能在内存清理后生存的机会。 我已经尝试了各种方法来让服务生存下来,甚至尝试将重复警报设置在AlarmManager上,但即使那也会被取消。
我相信我错过了某些东西,有人有办法让进程/线程在执行“内存清理”后仍能生存吗? 提前感谢。
1个回答

2

我创建了一个服务(作为新进程)。

请不要增加额外的进程,它对你没有任何价值,而且会浪费CPU、RAM和电池。

一切都很顺利,直到有人去任务管理器并点击“清除内存”按钮。

Android中没有“任务管理器”,也没有“清除内存”按钮。你可能在想某些特定设备制造商添加的功能。

我很确定我漏掉了什么,有人知道如何让一个进程/线程在这个“内存清理”按钮后继续运行吗?

如果“内存清理”与设置中正在运行的应用程序列表中的“强制停止”相同,则无法使进程/线程继续运行。用户可以终止任何她想终止的应用程序。实际上,在Android 3.1+上,“强制停止”意味着您的应用程序将永远不会再次运行,除非用户稍后手动启动您的其中一个活动。

您可以创建自己的固件,拥有自己的本地代码守护进程,这些进程无法被“强制停止”。但是,安装为标准SDK应用程序的任何内容都可以被强制停止。


嗯,好吧,既然你这样说,我提到的TaskManager似乎是三星特有的应用程序。抱歉,是我的错。我认为它可以强制停止一个应用程序,但我不确定这个应用程序是如何工作的,但在Logcat中,我读到了某些关于“ActivityManager Force Stopping package…”的内容。所以它似乎是一个“强制停止”。 - StaticBR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接