听取被杀的应用程序&在它被杀之前做点什么

时间:2013-11-13 16:39:24

标签: android android-intent broadcastreceiver android-broadcast

我正在开发一款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中有一些应用程序会在被系统杀死后自动重启,他们如何实现这个功能呢?

1 个答案:

答案 0 :(得分:1)

在您的应用被杀之前,您无法检测或接收消息。 onPause()onDestroy()是您最好的选择,但无法保证会调用其中任何一个。

但是,如果资源再次可用,则在您的服务的START_STICKY中返回START_REDELIVER_INTENTonStartCommand()会让Android重新启动您的服务。

请注意,在较新版本的Android上强制停止应用程序(无法准确记住哪个版本,但我认为ICS)将停止该过程,直到用户手动启动它。这意味着如果用户在设置中单击“强制停止”,则START_STICKY将不起作用。