Simulate Android killing and restart service

2019-06-23 15:05发布

I want to simulate android killing and restarting my service to test what happens when I receive a null intent and what I need to do with cleanup / recovery. Is this possible?

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!
  }
}

Note: I read how-to-simulate-android-killing-my-process. The answers are very useful! But I think my use case is a bit different.

1条回答
狗以群分
2楼-- · 2019-06-23 15:39

You can use the same method for simulating service kill and restart.

Started the service (onStartCommand returns START_STICKY), logcat shows:

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

At this stage, used the following command to kill the process:

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

The service was restarted immediately (note the new process id and the fact that the intent is 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
查看更多
登录 后发表回答