这怎么能在android中完成?
public final Timer timer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Do task here
}
});
我需要能够调用 timer.start(); 来自计时器所在的活动。
在大多数情况下,使用处理程序而不是定时器要好得多。处理程序能够发送延迟消息。使用 Handler 的好处是:
例子:
class MyActivity extends Activity {
private static final int DISPLAY_DATA = 1;
// this handler will receive a delayed message
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// Do task here
if (msg.what == DISPLAY_DATA) displayData();
}
};
@Override
void onCreate(Bundle b) {
//this will post a message to the mHandler, which mHandler will get
//after 5 seconds
mHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 5000);
}
}
尝试这样的事情:
// this will run when timer elapses
TimerTask myTimerTask = new TimerTask() {
@Override
public void run() {
// ...
}
};
// new timer
Timer timer = new Timer();
// schedule timer
timer.schedule(myTimerTask, delayInMs);
如果您希望在活动的主线程中完成任务,请像这样修改它:
// get a handler (call from main thread)
final Handler handler = new Handler();
// this will run when timer elapses
TimerTask myTimerTask = new TimerTask() {
@Override
public void run() {
// post a runnable to the handler
handler.post(new Runnable() {
@Override
public void run() {
// ...
}
});
}
};
// new timer
Timer timer = new Timer();
// schedule timer
timer.schedule(myTimerTask, delayInMs);
Android 也有一个不错的CountDownTimer类
我已经在另一个问题中回答了这个问题。
我会避免使用 TimerTask,如果你把它们中的很多都关掉,它们不仅难以管理,而且对性能不利。
这些天,我会推荐Handler
几乎任何基于时间的任务。
请参阅定时器应用程序