web-dev-qa-db-fra.com

Obtenir le contexte dans un service

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?

264
user123321
732
mibollma

Service étend ContextWrapper qui étend Context. Par conséquent, la Service est une Context. Utilisez le mot clé 'this' dans le service.

58
user2138983
  1. Service étend ContextWrapper
  2. ContextWrapper étend Context

Alors....

Context context = this;

(en classe de service ou d'activité)

29
Hardik Gajera

Puisque Service est un Context, le contexte de la variable doit être this:

DataBaseManager dbm = Utils.getDataManager(this);   
7
Jorgesys

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; 
3
Ali Azaz Alam