是的,java的计时器可以使用,但正如问题所要求的更好的方法(适用于流动)。这是解释这里.
为了StackOverflow:
自定时器创建一个新线程-它可能会被认为很重,
如果您只需要在该活动运行一个处理程序可以与private final int interval = 1000; // 1 Secondprivate 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);
或者是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线程中运行一段代码,则可以使用此方法。
如果您需要回电话,即使您的活动没有运行,那么您可以使用AlarmManager