我想模拟 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!
}
}
注:我读过如何模拟 android-killing-my-process https://stackoverflow.com/questions/11365301/how-to-simulate-android-killing-my-process。答案非常有用!但我认为我的用例有点不同。
您可以使用相同的方法来模拟服务终止和重新启动。
启动服务(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
在这个阶段,使用了以下命令 https://stackoverflow.com/a/40783380/1233652杀死进程:
adb shell ps | grep <package name> | awk '{print $2}' | xargs adb shell run-as <package name again> kill
服务立即重新启动(注意新的进程 ID 以及意图为空的事实):
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)