Android - 每个时间单位执行操作

时间:2013-01-17 21:32:29

标签: java android timer

这更多的是无知而不是无能的问题。我正在尝试构建一个计时器应用程序,但发现CountDownTimer对象对我的目的来说太不准确了。因此,我想手动创建计时器,只需勾选每个时间单位并在每个刻度上执行某种操作(不必倒计时到任何东西,因为我将手动处理) - 是否有内置对象要做这个(除了CountDownTimer),还是我必须使用线程/睡眠?

2 个答案:

答案 0 :(得分:1)

使用HandlerpostDelayed()方法。准确且易于使用。你只需要在每次循环之后继续进行回调,但这不是太麻烦,而是让你根据需要调整间隔。

Handler timeThing = new Handler();    
Runnable timedWorker = new Runnable {
    public void run(){
        // Do work
        timeThing.postDelayed(this, 10000); // do it again later
    }
};
timeThing.postDelayed(timedWorker, 10000);

答案 1 :(得分:0)

使用AsyncTaskThread.sleep()

AsyncTask task=new AsyncTask<Void,Void,Void>() {
    @Override
    protected Void doInBackground(Void... params) {
        while (!isCancelled()) {
            try {
                Thread.sleep(1000);
                publishProgress();
            } catch (InterruptedException e) {
                break;
            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        //do something here    
    }
};
//task.execute(); to start
//task.cancel(); to stop

您的onProgressUpdate()将每N秒调用一次(本例中为1000)。