4

如何在每个定义的时间安排一个功能,并可以选择更改这个时间?我发现我可以使用 timer & timerTask 或处理程序来做到这一点。它不重复我定义的时间的问题,它随机重复......

    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 回答
2

我在这里使用了解决方案

但是在初始化处理程序的代码中,我使用了

mHandler = new Handler(getMainLooper);

代替

mHandler = new Handler();

这对我有用

于 2016-11-30T06:02:11.447 回答