请参阅@Yuri 从此处发布的代码。如何在一定次数后停止计时器 。如果我因为某些情况想停止它然后重新启动它。我该怎么做呢?
private final static int DELAY = 10000;
private final Handler handler = new Handler();
private final Timer timer = new Timer();
private final TimerTask task = new TimerTask() {
private int counter = 0;
public void run() {
handler.post(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show();
}
});
if(++counter == 4) {
timer.cancel();
}
//do some stuff in my app
//restart the timer again
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer.schedule(task, DELAY, DELAY);
}
这是我尝试过的,但它一直在我身上崩溃。
final int DELAY = 10000;
Timer timer;
MyTask task;
startManager Scanner;
Handler handler;
public class MyTask extends TimerTask {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
//do Stuff here
}
});
}
public class startManager {
public startManager() {
handler = new Handler();
timer = new Timer();
}
public void start() {
timer.schedule(task, 0, DELAY);
}
public void cancel() {
timer.cancel();
timer.purge();
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Scanner = new startManager();
//do some stuff
if (...)
Scanner.cancel()
//restart the timer and its task
Scanner=new startManager();
}