是的java的定时器可以使用,但正如问题所要求的更好的方法(对于移动设备)。这是解释的Here http://android-developers.blogspot.kr/2007/11/stitch-in-time.html.
为了 StackOverflow:
Since Timer http://developer.android.com/reference/java/util/Timer.html创建一个新线程,它可能被认为很重,
如果您需要的只是在活动运行时回调Handler http://developer.android.com/reference/android/os/Handler.html可以与
Runnable http://developer.android.com/reference/java/lang/Runnable.html:
private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
private Runnable runnable = new Runnable(){
public void run() {
Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
}
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
or a Message http://developer.android.com/reference/android/os/Message.html
private final int EVENT1 = 1;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case Event1:
Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
break;
}
}
};
...
Message msg = handler.obtainMessage(EVENT1);
handler.sendMessageAtTime(msg, System.currentTimeMillis()+interval);
handler.sendMessageDelayed(msg, interval);
顺便说一句,如果您想从另一个线程在 UI 线程中运行一段代码,则可以使用此方法。
WARNING: Handler
每当CPU进入深度睡眠时,定时器(或任何控制延迟的东西)就会暂停,但一旦CPU醒来(从暂停的地方),定时器就会继续。
如果即使您的活动没有运行也需要回电,您可以使用报警管理器 http://developer.android.com/reference/android/app/AlarmManager.html.