Minuterie facile. Le minuteur est un thread de travail. Mais TimerTask a un comportement peu fiable, il semble donc être recommandé par Handler. Considérez également handler.postDelayed (exécutable, delayMillis)!
Le fichier à utiliser est ・ Maina c Chity ty. À plus Créer une instance de Timer Créer une instance de MyTimer Créer la méthode ScheduleAtFixedRate pour Timer
・ Mon carillon r. À plus Hériter TimerTask Créer la méthode handle.post de Handle et Runnable
MainActivity.java
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Timer timer = new Timer();
MyTimer myTimer = new MyTimer(this);
timer.scheduleAtFixedRate(myTimer,0,10000);
}
}
Projet-> app-> src-> main-> java->
nom de fichier | MyTimer |
superclass | TimerTask |
MyTimer.java
public class MyTimer extends TimerTask{
private Handler handler;
private Context context;
private TIMER_STOP;
public MyTimer(Context context){
handler = new Handler();
this.context = context;
TIMER_STOP = false;
}
@Override
public void run(){
handler.post(new Runnable(){
@Override
public void run(){
Toast.makeText(context,"Toast",Toast.LENGTH_SHORT).show();
if(TIMER_STOP){
cancel();
}
}
});
}
public void TimerStop(){
TIMER_STOP = true;
}
}
En appelant myTimer.TimerStop () depuis MyActivity.class, cancel () </ font> </ strong> sera exécuté et le minuteur s'arrêtera. Dans le processus d'arrêt de thread, il existe un processus pour arrêter le thread avec @Override public void run () { while (KEY) {todo} </ font>}, mais <font color = "#" Quand j'ai fait cela dans la partie exécution de f55 "> Timer, l'instruction while a été exécutée indéfiniment pour chaque timer </ font>. J'ai donc utilisé if () {cancel ()}!
cancel () sera traité la prochaine fois que la minuterie s'exécutera. Par exemple, timer.scheduleAtFixedRate (my) Avec une minuterie réglée sur Timer, 0,1000 * 60 * 60), cancel () est activé lorsque la prochaine tâche de minuterie est exécutée (1 heure après la pire: 1000 * 60 * 60).
Vous souhaiterez peut-être détruire le thread car vous souhaitez arrêter le traitement immédiatement. Mais c'est dangereux. Lorsque Thread s'exécute normalement, les objets protégés peuvent devenir instables en raison de la suppression de Thread, ce qui peut entraîner un comportement inattendu. Il est difficile de trouver ou d'identifier les objets qui ont été libérés de Thread, alors considérez si vous pouvez concevoir un programme avec interruption () sans abandonner Thread.
Recommended Posts