2010-08-30 14 views
6

Rozumiem więc cykl życia usługi i tak dalej. Ale jestem zdezorientowany, do czego służy parametr startId?Parametr startId usługi Android

public int onStartCommand (Intent intent, int flags, int startId) 

otrzymuję że jest używany w połączeniu z stopSelf(int), ale nie widzę, co jest punktem lub gdy startId jest generowany. Jaki przypadek użycia będzie używać stopSelf (int)?

Odpowiedz

4

W jakim przypadku użyto stopSelf (int)?

Krok # 1: Call startService()

Krok 2: Call startService() ponownie

Krok 3: Call stopSelf()

W tym momencie chcemy usługa nie może być zatrzymany, ponieważ nadal jest praca niezrealizowana, reprezentowana przez drugie wywołanie startService(). Chcemy, aby wywołania startService() i stopSelf() pasowały do ​​siebie.

+0

Och, myślę, że rozumiem. Myślę, że to przemyślam. Więc po prostu przechowywaliśmy zmienną startId do zmiennej globalnej za każdym razem, gdy onStartCommand() zostanie wykonany, a następnie wywołuje stopSelf (int) na tej zmiennej globalnej. Ok, poczekaj. Próbowałem zastanowić się nad umieszczeniem identyfikatorów w synchronicznej kolejce lub czymś w rodzaju lol – Falmarri

+1

@Falmarri: "W ten sposób po prostu przechowywaliśmy startId do zmiennej globalnej za każdym razem, gdy onStartCommand() zostanie wykonany" - nie, ponieważ będzie ich kilka. Możesz chcieć przejrzeć 'IntentService' i rozważyć, czy jest to lepsza klasa bazowa do użycia. Obsługuje on same wywołania 'stopSelf (int)' oraz inne funkcje. – CommonsWare

+0

Hmm, wtedy myślę, że nadal jestem zdezorientowany. Jak byś poradził sobie z obsługą samego siebie? Czy istnieje przykład? Nie widziałem żadnego użycia startId w żadnym z przykładów. – Falmarri

Powiązane problemy