Search code examples
javaandroidtimerperiod

How to change android timer period?


I am writing simple game, where some action must accelerating during the process. The question is how to change timer's period?

    timer = new Timer();
    timerTask = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //
                    // I need to change timer's period here
                    //
                }
            });
        }
    };
    timer.schedule(timerTask, 0, period);

Will be glad to hear any advices.


Solution

  • I assume that you are performing some logic within the run() method of the TimerTask.

    I think a simpler way to go about this would be to use a Handler. This is possibly more idiomatic for Android:

    private final Handler mHandler = new Handler();
    
    private final Runnable mTask = new Runnable() {
        @Override
        public void run() {
            // Do your logic.
            // Now post again.
            mHandler.postDelayed(mTask, /* choose a new delay period */);
        }
    };    
    
    public void init() {
        delay = 1000L; // 1 second.
        mHandler.postDelayed(mTask, delay);
    }