2010-07-17 5 views
2

J'utilise une minuterie qui a besoin de contexte. Maintenant, j'ai le code suivant:Passage du contexte dans la minuterie ... est-ce sûr

mContext=context; 
    mEventID=eventID; 
    CountDownTimer cdTimer = new CountDownTimer(20000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      // Do nothing onTick... Sorry 
     } 
     public void onFinish() { 
      int deletedRows = mContext.getContentResolver().delete() 
      // ..rest of code 
     } 
    }; 
    cdTimer.start(); 

Est-ce sûr à utiliser, ou peut-être que je le contexte ici fuit? btw. C'est dans un broadcastreceiver.

Répondre

2

Vous ne devez pas passer le contexte dans le thread, mais vous y référer par son nom de parent.

quelque chose comme ça

class MyClass { 
... 
CountDownTimer cdTimer = new CountDownTimer(20000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      // Do nothing onTick... Sorry 
     } 
     public void onFinish() { 
      int deletedRows = myClass.this.context.getContentResolver().delete() 
      // ..rest of code 
     } 
    }; 

... 

} 

Vous avez probablement besoin d'appeler le contexte de votre nom de récepteur de radiodiffusion par exemple de: MyReceiver.this.context est un context en supposant membre de la classe.

Questions connexes