模拟Android杀戮和重启服务

时间:2015-04-03 15:50:24

标签: android android-intent service

我想模拟android杀戮并重新启动我的服务来测试当我收到空意图时我会发生什么以及我需要做什么来清理/恢复。这可能吗?

public MyService extends Service {
  @Override
  public void onCreate() {
    //Do stuff
  }

  @Override
  public void onStartCommand(Intent intent, int flags, int startId) {
    if (intent == null) {
      //Do stuff for restart
    } else {
      //Do stuff for normal start
      return START_STICKY;
    }
  }


  @Override
  public void onDestroy() {
    //Cleanup that may never be called!
  }
}

注意:我读过how-to-simulate-android-killing-my-process。答案非常有用!但我认为我的用例有点不同。

1 个答案:

答案 0 :(得分:1)

您可以使用相同的方法来模拟服务终止和重启。

启动服务(onStartCommand返回 START_STICKY ),logcat显示:

08-13 11:55:38.649 24159-24159/? D/TAG: onCreate()
08-13 11:55:38.650 24159-24159/? D/TAG: onStartCommand: intent is null? false; flags=0; startId=1

在此阶段,使用following command来终止进程:

adb shell ps | grep <package name> | awk '{print $2}' | xargs adb shell run-as <package name again> kill

立即重启服务(注意新进程ID和intent为null的事实):

08-13 11:55:43.742 24236-24236/? D/TAG: onCreate()
08-13 11:55:43.743 24236-24236/? D/TAG: onStartCommand: intent is null? true; flags=0; startId=2