2011-06-22 16 views
212

Czy istnieje jakiś niezawodny sposób uzyskania Context z Service?Uzyskaj kontekst w usłudze

Chcę zarejestrować odbiornik dla ACTION_PHONE_STATE_CHANGED, ale nie potrzebuję mojej aplikacji, aby zawsze uzyskać tę informację, więc nie umieszczam jej w numerze Manifest.

Nie mogę jednak zabić odbiornika telewizyjnego przez GC, gdy potrzebuję tej informacji, więc rejestruję odbiornik w postaci Service.

Dlatego potrzebuję numeru Context, aby zadzwonić pod numer registerReceiver(). Gdy nie potrzebuję już wyrejestrowywać tego urządzenia.

Jakieś wskazówki?

Odpowiedz

615
+151

lol. Jestem nowicjuszem. Dziękuję Ci bardzo!!! – user123321

+1

Miałem ten problem, ale okazało się, że to wątek roboczy, który nie ma kontekstu. Rozwiązałem to, przechodząc przez kontekst podczas konstruowania wątku. –

+10

Uwaga: Kontekst w usłudze będzie niewidoczny, dopóki onStart lub onStartCommand w usługach: http://stackoverflow.com/questions/7619917/how-to-get-context-in-android-service-class – class

45

usługi rozciąga ContextWrapper która rozciąga się kontekst. Dlatego usługa jest kontekstem. Użyj słowa kluczowego "this" w usłudze.

6

Od Service jest Context zmienna kontekst musi być this:

DataBaseManager dbm = Utils.getDataManager(this); 
19
  1. usługi rozciąga ContextWrapper
  2. ContextWrapper rozszerza kontekst

Więc ....

Context context = this; 

(w służbie lub klasy aktywności)

0

YourServiceClass.this

GPSTracker gpsTracker = new GPSTracker(TimeService.this);