android - 目前有个需求 要在listview的每个item中实现一个倒计时功能 希望大家能帮我指点迷津
黄舟
黄舟 2017-04-17 16:52:10
[Android讨论组]

1 倒计时功能可以通过 Timer或者Handler操作完成,这两个方法哪个节省资源?担心item比较多的情况
2 手机锁屏或者退出程序的情况下,以上两种方法是否能继续计时?我的思路是开一个service后在里面跑一个子线程完成计时,发送给activity,但这样的话service可能会被杀死。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
PHP中文网

我觉得不必考虑节省资源的问题,毕竟Timer和Handler都不是非常费资源。你的程序不会说几千个Timer吧。最主要的问题是锁屏时Timer会停掉。
所以开个service是个好办法。

天蓬老师

做一个全局的CountDownTimer,在onTick()方法中调用adapter更新的方法,性能可好了!

class MyCount extends CountDownTimer {

        public MyCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            //这里因为我用的RecycleView,所以使用了局部更新,也就是有倒计时的item才更新
            for (Integer integer : secondsKillPositions) {
                HomePagerThemeAdapter.this.notifyItemChanged(integer);
            }
        }

        @Override
        public void onFinish() {
            new MyCount(1000 * 60, 1000).start();
        }
    }
PHP中文网
  1. Timer实际上只需要一个, 在onTick()里面更新item的视图就好了

  2. 不清楚你的倒计时的目的, 如果只是单纯的倒计时没有必要再后台保留Timer, 保存好起始计时的时间就好了, 如果是即使退出了Activity在倒计时完毕的时候也想执行点东西, 那就一定要用Service

伊谢尔伦

首先将获取到的数据源里面的时间抽取出来,通过冒泡排序取得最小值。然后依据最小值去进行间隔一秒进行的数据源的改变。
当倒计时结束后重新去请求网络数据,再次进行上述操作。当切换界面的时候,关闭倒计时。返回或者进入这个界面的时候,开启倒计时

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号