android – 如何暂停和恢复TimerTask / Timer

前端之家收集整理的这篇文章主要介绍了android – 如何暂停和恢复TimerTask / Timer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的 Android应用程序中有一个动画,闪烁一个TextView不同的颜色.我使用了TimerTask,Timer和Runnable方法来实现这一点.我需要做的是在用户在onPause()的动画中离开应用程序时停止线程,并在用户返回到onResume()中的应用程序时恢复线程.以下是我实现的代码,但它不工作(onPause()和onResume()),我不明白为什么.我已经看过类似的事情的其他一些帖子,但是他们没有帮助我弄清楚在我的情况下该怎么做.我读过TimerTasks已经过时了,我应该使用ExecutorService方法;我不知道如何实现这个功能.
...timerStep5 = new TimerTask() {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                if (b5) {
                    cashButton2SignalText.setBackgroundColor(Color.RED);
                    cashButton2SignalText.setTextColor(Color.WHITE);
                    b5=false;
                } else {
                    cashButton2SignalText.setBackgroundColor(Color.WHITE);
                    cashButton2SignalText.setTextColor(Color.RED);
                    b5=true;
                }
                }
            });
        }
};

timer5.schedule(timerStep5,250,250);

}

public void onPause(){

    super.onPause();

    timerStep5.cancel();

}

public void onResume(){

    super.onResume();

    timerStep5.run();

}

解决方法

在TimerTask被取消之后,它不能再运行,你必须创建一个新的实例.

在这里阅读细节:

https://stackoverflow.com/a/2098678/727768

对于较新的代码,推荐使用ScheduledThreadPoolExecutor,它处理像异常和任务比时间间隔更长的时间的情况.

但是对于你的任务,TimerTask就够了.

猜你在找的Android相关文章