2015-04-03 36 views
5

我想模擬android查殺並重新啓動我的服務,以測試收到空意圖時發生的情況以及我需要執行的清理/恢復操作。這可能嗎?模擬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。答案非常有用!但我認爲我的用例有點不同。

回答

0

您可以使用相同的方法來模擬服務終止和重新啓動。

開始該服務(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和意圖爲空的事實):

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