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轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...