扫码关注官方订阅号
1 倒计时功能可以通过 Timer或者Handler操作完成,这两个方法哪个节省资源?担心item比较多的情况2 手机锁屏或者退出程序的情况下,以上两种方法是否能继续计时?我的思路是开一个service后在里面跑一个子线程完成计时,发送给activity,但这样的话service可能会被杀死。
人生最曼妙的风景,竟是内心的淡定与从容!
我觉得不必考虑节省资源的问题,毕竟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(); } }
Timer实际上只需要一个, 在onTick()里面更新item的视图就好了
Timer
onTick()
不清楚你的倒计时的目的, 如果只是单纯的倒计时没有必要再后台保留Timer, 保存好起始计时的时间就好了, 如果是即使退出了Activity在倒计时完毕的时候也想执行点东西, 那就一定要用Service了
Activity
Service
首先将获取到的数据源里面的时间抽取出来,通过冒泡排序取得最小值。然后依据最小值去进行间隔一秒进行的数据源的改变。当倒计时结束后重新去请求网络数据,再次进行上述操作。当切换界面的时候,关闭倒计时。返回或者进入这个界面的时候,开启倒计时
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我觉得不必考虑节省资源的问题,毕竟Timer和Handler都不是非常费资源。你的程序不会说几千个Timer吧。最主要的问题是锁屏时Timer会停掉。
所以开个service是个好办法。
做一个全局的CountDownTimer,在onTick()方法中调用adapter更新的方法,性能可好了!
Timer实际上只需要一个, 在onTick()里面更新item的视图就好了不清楚你的倒计时的目的, 如果只是单纯的倒计时没有必要再后台保留
Timer, 保存好起始计时的时间就好了, 如果是即使退出了Activity在倒计时完毕的时候也想执行点东西, 那就一定要用Service了首先将获取到的数据源里面的时间抽取出来,通过冒泡排序取得最小值。然后依据最小值去进行间隔一秒进行的数据源的改变。
当倒计时结束后重新去请求网络数据,再次进行上述操作。当切换界面的时候,关闭倒计时。返回或者进入这个界面的时候,开启倒计时