2015-09-03 1 views
0

Je fais une application calculatrice dans Android qui fait un calcul beaucoup dans la méthode onClick l'amenant à sauter des images:méthode onClick retarde le thread principal

I/Choreographer﹕ Skipped 206 frames! The application may be doing too much work on its main thread. 

La méthode ressemble à ceci:

public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btnZero: 
     //do some stuff 
     break; ... 
} 

Ma question est: Est-ce que je peux faire en sorte que cela fonctionne plus vite - peut-être par des threads ou quoi que ce soit d'autre?

+0

206 cadres seulement à la pression d'un bouton? c'est bizarre ... donner le code à l'intérieur de btnZero –

+0

Faire des calculs dans AsyncTask, en désactivant le bouton après le clic et en affichant la barre de progression, puis après le calcul, masquer la barre de progression et réactiver le bouton. –

Répondre

2

Vous pouvez utiliser un arrière-plan tel que AsyncTask < ..., ..., ...> pour effectuer les calculs, puis renvoyer le résultat à votre interface utilisateur. De cette façon, les calculs ne sont pas faits sur le MainUI-Thread mais en arrière-plan. De cette façon, votre interface ne gèlera pas et c'est la manière habituelle dans Android de faire plus d'activités. Voir http://developer.android.com/reference/android/os/AsyncTask.html pour référence