Einfacher Timer. Der Timer ist ein Arbeitsthread. Da TimerTask jedoch ein unzuverlässiges Verhalten aufweist, scheint es von Handler empfohlen zu werden. Berücksichtigen Sie auch handler.postDelayed (lauffähig, delayMillis)!
Die zu verwendende Datei ist ・ Maina c Chity ty. Wir sehen uns Erstellen Sie eine Instanz von Timer Erstellen Sie eine Instanz von MyTimer Erstellen Sie die ScheduleAtFixedRate-Methode für den Timer
・ Mein Glockenspiel r. Wir sehen uns TimerTask erben Erstellen Sie die handle.post-Methode von Handle und 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);
}
}
Projekt-> app-> src-> main-> java->
Dateiname | 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;
}
}
Durch Aufrufen von myTimer.TimerStop () aus MyActivity.class wird cancel () </ font> </ strong> ausgeführt und der Timer stoppt. Im Thread-Stopp-Prozess gibt es einen Prozess zum Stoppen des Threads mit @Override public void run () { while (KEY) {todo} </ font>}, aber <font color = "#" Als ich das im Ausführungsteil von f55 "> Timer tat, wurde die while-Anweisung für jeden Timer </ font> auf unbestimmte Zeit ausgeführt. Also habe ich if () {cancel ()} verwendet!
cancel () wird beim nächsten Start des Timers verarbeitet. Zum Beispiel timer.scheduleAtFixedRate (my) Bei einem Timer-Satz von Timer (0,1000 * 60 * 60) wird cancel () aktiviert, wenn die nächste Timer-Task ausgeführt wird (1 Stunde nach dem schlechtesten: 1000 * 60 * 60).
Möglicherweise möchten Sie den Thread zerstören, da Sie die Verarbeitung sofort beenden möchten. Das ist aber gefährlich. Wenn Thread normal ausgeführt wird, können geschützte Objekte aufgrund des Verwerfens von Threads instabil werden, was zu unerwartetem Verhalten führen kann. Es ist schwierig, Objekte zu finden oder zu identifizieren, die von Thread freigegeben wurden. Überlegen Sie daher, ob Sie ein Programm mit Interrupt () entwerfen können, ohne Thread zu verwerfen.