4

今回変更するオプションを使用して、定義された時間ごとに関数をスケジュールする方法は? timer & timerTask または handler を使用して実行できることがわかりました。私が定義した時間を繰り返さないという問題は、ランダムに繰り返されます...

    runnable = new Runnable() {

        @Override
        public void run() {
            //some action
            handler.postDelayed(this, interval);
        }
    };

            int hours = settings.getIntervalHours();
            int minutes = settings.getIntervalMinutes();

            long interval = (hours * 60 + minutes) * 60000;

            changeTimerPeriod(interval);

private void changeTimerPeriod(long period) {
    handler.removeCallbacks(runnable);
    interval = period;
    runnable.run();
}
4

2 に答える 2

11

メソッドでHandlerオブジェクトを使用しますonCreate。そのpostDelayedメソッドにより、Runnableパラメーターがメッセージ キューに追加され、指定された時間 (この例では 0) が経過した後に実行されます。次に、これは一定の時間 (この例では 1000 ミリ秒) 後にキューに入れられます。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    android.os.Handler customHandler = new android.os.Handler();
    customHandler.postDelayed(updateTimerThread, 0);
}

private Runnable updateTimerThread = new Runnable()
{
    public void run()
    {
        //write here whaterver you want to repeat
        customHandler.postDelayed(this, 1000);
    }
};
于 2014-04-05T09:57:11.843 に答える