如何防止我的Android应用/服务被任务管理器"杀死"?

Don*_*Don 17 service android kill taskmanager

非常重要的是我的服务保持运行,直到有密码的人从我的UI屏幕停止服务.我的应用程序运行良好但它的设计是由他们的孩子手机上的父母(带密码)打开/关闭.我已经设法使一切正常,但我遇到的问题是,如果孩子使用任务管理器来终止我的服务,那么我的应用程序是无用的.我要感谢任何知道某种方法的人

1)监视服务并在其被"杀死"时自动启动它,或2)防止某人除了从启动该服务的活动(管理屏幕)之外杀死它.或两者?

对不起,如果我不是很清楚描述问题,我是初学者.到目前为止,我取得了很大的进步,但我陷入了最后的障碍.

Yur*_*ury 10

您可以使用API​​方法:startForeground().以下是对它的解释:

已启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,系统将其视为用户主动了解的内容,因此在内存不足时不会成为查杀的候选者.(从理论上讲,服务在当前前台应用程序的极端内存压力下被杀死仍然是可能的,但实际上这不应该是一个问题.)

在这里您可以找到如何使用它的示例.

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


Yan*_*min 5

没有root设备,没有办法直接阻止这种情况.SDK有助于防止出现这类问题.

你可以做"真正的邪恶"技巧,并在两个应用程序中有两个服务.每个服务都监视另一个服务,如果停止则重新启动它.这很愚蠢,但在大多数情况下,即使是速度最快的孩子也无法杀死这两个应用程序.

  • 但一个程序可以!任何可以执行"kill -KILL -1"等效的程序都可能导致所有实例同时死亡. (3认同)
  • 我刚刚安装了一个名为Smart App Protector Free的应用程序,它会问你是否要安装帮助程序而不是防止它被杀死.它有效,我想知道它是怎么回事.我使用系统面板杀死所有东西(包括系统进程),但保护器仍然会回来.更多的是,我看不到帮助程序运行的痕迹,而不是在系统面板中,甚至我在设备控制台中通过ps(通过adb),我仍然看不到帮助程序存在.任何提示? (3认同)

Tin*_*nfu 5

您可以编写一个帮助应用程序来接收Android广播"android.intent.action.PACKAGE_RESTARTED",当您的应用程序被杀,您的助手将收到该广播,您可以重新启动您的应用程序或其他任何.

这就是"Smart App Protector Free"的功能.

不好的是用户必须安装两个应用而不是一个.