Gibt es einen zuverlässigen Weg, um einen Context
von einem zu bekommen Service
?
Ich möchte einen Rundfunkempfänger für registrieren, ACTION_PHONE_STATE_CHANGED
aber ich brauche meine App nicht, um diese Informationen immer zu erhalten, also lege ich sie nicht in die Manifest
.
Ich kann den Broadcast-Empfänger jedoch nicht vom GC töten lassen, wenn ich diese Informationen benötige, sodass ich den Broadcast-Empfänger in a registriere Service
.
Daher muss ich Context
anrufen registerReceiver()
. Wenn ich das nicht mehr brauche, hebeACTION_PHONE_STATE_CHANGED
ich die Registrierung auf .
Irgendwelche Tipps?
android
broadcastreceiver
android-service
user123321
quelle
quelle
Service
erstreckt sich,ContextWrapper
was sich erstrecktContext
. DaherService
ist das einContext
. Verwenden Sie das'this'
Schlüsselwort im Dienst.quelle
Service
erweitertContextWrapper
ContextWrapper
erweitertContext
So....
(in Service- oder Aktivitätsklasse)
quelle
Da a
Service
istContext
, muss der variable Kontext seinthis
:quelle
Als Service ist schon ein Kontext selbst
Sie können es sogar durchbringen:
ODER
quelle
Nur für den Fall, dass jemand etwas bekommt
NullPointerException
, müssen Sie den Kontext in sich aufnehmenonCreate().
Service
ist einContext
, also mach das:quelle