如何防止我的Android应用程序/服务被任务pipe理器“杀死”?

这是非常重要的,我的服务保持运行,直到有人用密码停止从我的UI界面的服务。 我的应用程序运行良好,但它的devise是由父母(使用密码)在他们的孩子手机上打开/closures。 我已经设法使所有的工作,但我遇到的问题是,如果孩子使用任务pipe理器来杀死我的服务,那么我的应用程序是没用的。 我会感谢任何一个知道方法的人

1)监视服务,如果服务“死亡”,则自动备份; 2)除了启动服务的活动(pipe理屏幕)外,防止某人能够杀死服务。 或两者?

如果我不太清楚描述问题,我很抱歉,我是一个初学者。 到目前为止我已经取得了很大的进步,但是我陷入了最后的障碍。

Solutions Collecting From Web of "如何防止我的Android应用程序/服务被任务pipe理器“杀死”?"

你可以使用API​​方法: startForeground() 。 这是对它的解释:

已启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,系统认为该服务是用户主动注意的内容,因此不适用于内存不足的情况下进行查杀。 (从理论上讲,服务在当前前台应用程序的极端内存压力下可能被杀死,但实际上这不应该成为问题。)

在这里你可以find一个如何使用这个例子。

至于这个问题,你不能阻止一个服务被杀害。 它可以被系统杀死。 即使系统服务可能会被杀死。 如果发生这种情况,则重新启动。 您可以使用相同的方法。

没有一种方法可以直接防止这种情况发生,没有根植设备。 SDK有助于防止这些问题。

你可以做“真正的邪恶”的把戏,并在两个应用程序有两个服务。 每个服务监视另一个,如果停止,则重新启动它。 这很烂,但在大多数情况下,即使是最快的手指也不能杀死这两个应用程序。

你可以写一个帮手应用程序接收android广播“android.intent.action.PACKAGE_RESTARTED” ,当你的应用程序被杀害,你的帮手将收到该广播,你可以重新启动你的应用程序或任何。

这就是“智能应用程序免费”的做法。

坏事是用户必须安装两个应用程序,而不是一个。

对于那些还在寻找答案的人来说,这个答案可能是正确的:

你不能:做一个服务unkillable,如果运行在低内存系统将永远杀死你的服务。 但

您可以:告诉系统在终止服务时重新启动服务。 看看这段代码:

公共静态最终诠释START_REDELIVER_INTENT

在API级别5中添加

常量从onStartCommand(Intent,int,int)返回:

如果这个服务的进程在启动的时候被kill(在从onStartCommand(Intent,int,int)返回之后),那么它将被安排重启,最后一个被传递的Intent通过onStartCommand被重新传递给它(Intent,int, INT)。 这个意图将保持计划重新传递,直到服务调用提供给onStartCommand(Intent,int,int)的开始ID的stopSelf(int)。 该服务将不会收到带有空Intent的onStartCommand(Intent,int,int)调用,因为只有当它没有完成处理发送给它的所有Intents时才会重新启动(并且任何此类未决事件将在重新启动点)。

常量值:3(0x00000003)

只需将返回types设置为START_TICKY。