簡體   English   中英

使用java.util.Timer

[英]Using java.util.Timer

試圖使計時器每秒調用一個方法。 我不知道為什么這段代碼無法正常工作。 代碼來自我的activity_main.xml和MainActivity.java

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:

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");
    }
}

為了進行調試,請使用斷點或Log.d()調用來查看計時器設置代碼是否正在運行。 通常,使用Log.d()比使用println()也更好。

在Android上, Java Handler 發送消息比使用Java Timer更好。 操作系統可以更好地對此進行管理,例如在“活動”生命周期中。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM