0

これは、無能というより無知の問題です。タイマー アプリケーションを構築しようとしていますが、CountDownTimer オブジェクトが目的に対して不正確すぎることがわかりました。したがって、すべての時間単位を刻み、各刻みで何らかのアクションを実行することでタイマーを手動で作成したい (これを手動で処理するため、必ずしもカウントダウンする必要はありません) - 実行する組み込みオブジェクトはありますか?これ (CountDownTimer 以外)、またはスレッド/スリープを使用する必要がありますか?

4

2 に答える 2

1

aHandlerpostDelayed()メソッドを使用します。正確で使いやすい。ループごとにコールバックを入れ続ける必要がありますが、それは面倒ではなく、必要に応じて間隔を調整できます。

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);
于 2013-01-18T01:05:35.750 に答える
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

NonProgressUpdate()秒ごとに呼び出されます (この例では 1000)。

于 2013-01-18T01:07:58.710 に答える