J'ai créé une tâche asynchrone comme ceci:Asynchronous tâche
private class LongOperationcheckall extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String result="Start";
try
{
Looper.myLooper().prepare();
// Looper.loop();
// TODO Auto-generated method stub
for(int k=0;k<13;k++)
{
checkall();
this.publishProgress("Show the dialog");
//count++;
}
result="Success";
checkallcomp++;
OnscanComplete();
}
catch(Exception ex)
{
checkallcomp++;
OnscanComplete();
}
return result;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
Log.i("Progress", "Progressincheck");
}
protected void onPostExecute(String params) {
Log.w("all Check",params);
// Execution of result of Long time consuming operation
}
}
Je code ajouté,
Looper.myLooper().prepare();
appeler à cette tâche comme
taskAllcheck = new LongOperationcheckall();
taskAllcheck.execute();
La quatrième fois où Je clique sur le bouton de démarrage la quatrième fois, il donne l'exception
Impossible de créer un gestionnaire à l'intérieur du fil à l'intérieur fil pas appelé looper.prepare
Seulement, quand je lance dans l'appareil, il exécute OK dans l'émulateur, mais après ajouter cette ligne, l'erreur vient comme un seul looper peut être créé par thread lorsque je clique sur le bouton de démarrage pour la quatrième fois et appelez taskAllcheck.execute();
.
Que fait la méthode checkall()? L'exception "Impossible de créer un gestionnaire ..." se produit généralement lorsque vous essayez de faire quelque chose qui n'est autorisé que dans le thread d'interface utilisateur, dans un thread d'arrière-plan. Check12 ( – Egor
checkall() seulement vérifier le paramètre comme bluetooth activé ou désactivé, GPS activé ou désactivé dans l'appareil et mettre à jour l'état en fonction dans la base de données –
Voilà de quoi je parle. Peut-être, ce sont des opérations qui doivent être exécutées sur le thread de l'interface utilisateur. Vous pouvez les placer dans Runnable dans la méthode activity.runOnUIThread(), de cette façon vous surmonterez l'exception Looper. – Egor