如何强制服务的onDestroy方法

时间:2011-10-04 12:14:17

标签: android android-service

有没有办法从Android操作系统强制执行服务的onDestroy方法,或者说明确?

好的,我想我找到了一种如何手动完成的方法。 我认为如果你将服务声明为远程服务(仅用于调试目的,因为远程服务不是最好的应用程序设计案例):

    <service android:name="widget.SomeWidget"
        android:process=":remote" />

然后在DDMS设备概述中,您可以停止远程服务。 我相信它与Android操作系统杀死进程的效果相同。

LogCat的结果:

INFO/ActivityManager(38): Process asd.asd.asd:remote (pid 4104) has died.
INFO/ActivityManager(38): Start proc asd.asd.asd:remote for service asd.asd.asd/widget.SomeWidget: pid=4230 uid=10028 gids={3003, 1015}

3 个答案:

答案 0 :(得分:1)

杀死服务的操作系统不受您控制。您可以做的最好的事情是调用Context.stopService()
最接近的解决方法是尝试这样的事情:

Runtime.getRuntime().exec("kill "+processId);

其中processId是您要杀死的进程的PID。 你需要一个root用户手机。

答案 1 :(得分:0)

调用Context.stopService()来停止服务,或者从服务内部调用stopSelf()。

答案 2 :(得分:0)

通过服务绑定器界面调用处理清理任务的yourOwnDestroy()方法没有意义;建议不要依赖onDestroy()

onDestroy()将安排在unbindService()stopService()之后的某个时间调用