Existe-t-il un moyen fiable d'obtenir un Context
d'un Service
?
Je souhaite enregistrer un récepteur de diffusion pour ACTION_PHONE_STATE_CHANGED
mais je n'ai pas besoin que mon application obtienne toujours cette information, je ne la mets donc pas dans la Manifest
.
Cependant, je ne peux pas faire en sorte que le récepteur de diffusion soit tué par le GC lorsque j'ai besoin de cette information; je l'enregistre donc dans un Service
.
Par conséquent, j'ai besoin d'un Context
pour appeler registerReceiver()
. Quand je n'ai plus besoin du ACTION_PHONE_STATE_CHANGED
I désinscrire le.
Des conseils?
Service
étend ContextWrapper
qui étend Context
. Par conséquent, la Service
est une Context
. Utilisez le mot clé 'this'
dans le service.
Service
étend ContextWrapper
ContextWrapper
étend Context
Alors....
Context context = this;
(en classe de service ou d'activité)
Puisque Service
est un Context
, le contexte de la variable doit être this
:
DataBaseManager dbm = Utils.getDataManager(this);
Comme Service est déjà un Contexte lui-même
vous pouvez même le faire passer:
Context mContext = this;
OR
Context mContext = [class name].this; //[] only specify the class name
// mContext = JobServiceSchedule.this;