[英]Using java.util.Timer
Trying to make a timer call a method every second. 试图使计时器每秒调用一个方法。 I can't figure out why this code is not working. 我不知道为什么这段代码无法正常工作。 Code was taken from my activity_main.xml and MainActivity.java 代码来自我的activity_main.xml和MainActivity.java
activity_main: activity_main:
<ToggleButton
android:id="@+id/btnStartStop"
android:layout_width="80dp"
android:layout_height="50dp"
android:layout_alignLeft="@+id/clockDisplay"
android:layout_below="@+id/clockDisplay"
android:layout_marginLeft="40dp"
android:layout_marginTop="0dp"
android:textOff="Start"
android:textOn="Stop"
android:onClick="toggleStartStop" />
MainActivity.java: MainActivity.java:
public void toggleStartStop(View view){
if(((ToggleButton) view).isChecked()){
Timer timer = new Timer("timer", true);
TimerTask task = new startTask();
timer.schedule(task, new Date(), 1000);
}else{
stopTimer();
}
}
class startTask extends TimerTask
{
public void run()
{
System.out.println("inc secs var");
}
}
For debugging, use a breakpoint or a Log.d()
call to see if the timer-setup code is running. 为了进行调试,请使用断点或Log.d()
调用来查看计时器设置代码是否正在运行。 It's also better to use Log.d()
than println()
in general. 通常,使用Log.d()
比使用println()
也更好。
On Android, it's better to send a message to a Handler
than use a Java Timer. 在Android上, 向 Java Handler
发送消息比使用Java Timer更好。 The OS can manage this better, eg during the Activity lifecycle. 操作系统可以更好地对此进行管理,例如在“活动”生命周期中。
class UpdateHandler extends Handler {
private static final int MSG_UPDATE = 1;
private static final long UPDATE_INTERVAL = 1000; // msec
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_UPDATE:
// do stuff...
scheduleNextUpdate();
break;
}
}
void scheduleNextUpdate() {
sendEmptyMessageDelayed(MSG_UPDATE, UPDATE_INTERVAL);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.