2015-04-03 13 views
5

Chcę zasymulować zabijanie i ponowne uruchamianie Androida w usłudze, aby sprawdzić, co się stanie, gdy otrzymam zamiar null i co muszę zrobić z oczyszczaniem/odzyskiwaniem. czy to możliwe?Symulowanie zabijania i restartowania systemu 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! 
    } 
} 

Uwaga: Czytałem how-to-simulate-android-killing-my-process. Odpowiedzi są bardzo przydatne! Ale myślę, że mój przypadek użycia jest nieco inny.

Odpowiedz

0

Możesz użyć tej samej metody do symulacji zabicia usługi i ponownego uruchomienia.

uruchomieniu usługi (onStartCommand powraca START_STICKY) logcat pokazuje:

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 

W tym etapie stosuje się following command zabić procesu:

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

Usługa wznowiono natychmiast (zanotuj nowy identyfikator procesu i fakt, że cel jest nieważny):

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