On m'a conseillé d'utiliser ce code pour faire ma méthode d'exécution après une période de temps définie, je l'ai modifié un peu et maintenant j'ai:Problèmes avec runnable
private Handler mHandler = new Handler();
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
final long start = mStartTime;
// Get the difference in ms
long millis = SystemClock.uptimeMillis() - start;
// Format to hours/minutes/seconds
int mTimeInSec = (int) (millis/1000);
// Do your thing
Location location = tracker.getLastKnownLocation(best);
RetrieveAvgPower(location);
// Update at the next second
mHandler.postAtTime(this, 1000);//start + ((mTimeInSec + 10) * 1000));
}
};
Et je tente de démarrer et arrêter avec:
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
mStartTime = System.currentTimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 1000);
break;
case R.id.stop:
mHandler.removeCallbacks(mUpdateTimeTask);
break;}}
Cependant, il y a un problème. Tout d'abord, ma méthode définit le texte et écrit une ligne dans le fichier journal, mais si j'utilise le code ci-dessus, le texte n'est pas défini, mais toutes les informations sont écrites automatiquement dans le fichier journal. Une autre chose est que je ne peux pas arrêter runnable - après qu'il commence à exécuter le programme semble ne pas répondre et se bloque si j'essaie d'appuyer sur le bouton d'arrêt. Qu'est-ce que je fais de mal et comment cela peut-il être résolu?
Vous devez utiliser une asynctask – Falmarri