我知道强行查杀应用程序非常糟糕,但客户需要它。我需要为应用程序实施强制重启。这就是我实现它的方式:
我在我的应用程序(而非活动)BroadcastReceiver
方法中创建了onCreate
。我等待REBOOT命令被广播。收到后,我让它广播另一条服务调用stopSelf
的消息,以便线程和服务有机会彻底退出。然后我在5秒钟后调用AlarmManager
调用我的主要活动。最后让我的应用程序使用Process.kill(Process.myPid())
自行终止。在大多数情况下,它工作,我只需要在它杀死进程之前添加一些额外的等待时间(可能通过等待每个正在运行的服务的TERMINATE广播)。我的问题是:在查看日志时,我发现系统会调度服务以重新启动。我担心冲突。有没有办法终止服务而没有重启的机会?
答案 0 :(得分:0)
我通过让Receiver等待所有服务完成onDestroy()
调用之前解决了这个问题。我也从Process.kill()
更改为ActivityManager.killBackgroundProcesses()
。
作为一个旁注:我知道这是错误的,但确实感觉很酷,杀死了hehehe的过程。