我正在开发一款Android应用。我在我的应用中运行了Service。
我需要在应用程序被杀时处理服务中的某些内容。我怎样才能听到应用被杀事件?是否有广播操作?如果没有,有没有办法听app被杀 ???
我在 MyService 的onDestroy()
回调中有一条日志消息,但是当我在“设置”中“强制停止”我的应用时,它不会被调用。
public MyService extends Service{
...
@Override
public void onDestroy(){
super.onDestroy();
//It is not called when force stop my app from system settings
Log.i("Debug","service is killed!");
}
}
但是我知道google play中有一些应用程序会在被系统杀死后自动重启,他们如何实现这个功能呢?
答案 0 :(得分:1)
在您的应用被杀之前,您无法检测或接收消息。 onPause()
和onDestroy()
是您最好的选择,但无法保证会调用其中任何一个。
但是,如果资源再次可用,则在您的服务的START_STICKY
中返回START_REDELIVER_INTENT
或onStartCommand()
会让Android重新启动您的服务。
请注意,在较新版本的Android上强制停止应用程序(无法准确记住哪个版本,但我认为ICS)将停止该过程,直到用户手动启动它。这意味着如果用户在设置中单击“强制停止”,则START_STICKY将不起作用。