Is there any reliable way to get a Context
from a Service
?
I want to register a broadcast receiver for ACTION_PHONE_STATE_CHANGED
but I don't need my app to always get this information, so I don't put it in the Manifest
.
However, I can't have the broadcast receiver be killed by the GC when I need this information so I'm registering the broadcast receiver in a Service
.
Hence, I need a Context
to to call registerReceiver()
.
When I no longer need the ACTION_PHONE_STATE_CHANGED
I unregister it.
Any tips?
This question is related to
android
broadcastreceiver
android-service
just in case someone is getting NullPointerException
, you need to get the context inside onCreate().
Service
is a Context
, so do this:
@Override
public void onCreate() {
super.onCreate();
context = this;
}
Service
extends ContextWrapper
ContextWrapper
extends Context
So....
Context context = this;
(in Service or Activity Class)
Since Service
is a Context
, the variable context must be this
:
DataBaseManager dbm = Utils.getDataManager(this);
As Service is already a Context itself
you can even get it through:
Context mContext = this;
OR
Context mContext = [class name].this; //[] only specify the class name
// mContext = JobServiceSchedule.this;
Service
extends ContextWrapper
which extends Context
. Hence the Service
is a Context
.
Use 'this'
keyword in the service.
Source: Stackoverflow.com