有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓使用java。util。计时器

试图让计时器每秒调用一个方法。我不明白为什么这个代码不起作用。代码取自我的活动主题。xml和MainActivity。爪哇

主要活动:

<ToggleButton
    安卓:id="@+id/btnStartStop"
    安卓:layout_width="80dp"
    安卓:layout_height="50dp"
    安卓:layout_alignLeft="@+id/clockDisplay"
    安卓:layout_below="@+id/clockDisplay"
    安卓:layout_marginLeft="40dp"
    安卓:layout_marginTop="0dp"
    安卓:textOff="Start"
    安卓:textOn="Stop"
    安卓:onClick="toggleStartStop" />

主要活动。爪哇:

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

共 (1) 个答案

  1. # 1 楼答案

    要进行调试,请使用断点或Log.d()调用查看计时器设置代码是否正在运行。一般来说,使用Log.d()比使用println()更好

    在Android上,使用send a message to a{}比使用Java计时器更好。操作系统可以更好地管理这一点,例如在活动生命周期期间

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