RecyclerView倒计时导致View复用问题解决方案

 

场景1:RecyclerView item 倒计时的时候,如果系统休眠或者应用切换到后台,由于当前应用被挂起,计时器会停止工作,返回应用计时器才开始继续工作,导致时间不对,这个计时器控件是用Timer写的。

  • 解决方案:把Timer替换为CountDownTimer,系统休眠或者应用切换到后台后再返回时间依然准确,具体参考CountDownTimer源码,核心就是运用了SystemClock.elapsedrealtime()获取开机已运行时间这个API,通过Handler机制实现的。

场景2:假如说倒计时的item就在第一个,当你往下滑的时候第一个item滑出了屏幕,在你再返回第一个的时候,此时这个item的时间又重新开始倒计时了,因为你获取的服务器时间是你刷新的时候获得的,你下滑返回RecyclerView只是把从服务器获取的时间再加载一下。

  • 解决方案:在网络请求数据返回的时候记录一下当时的开机运行时间long A = 
    SystemClock.elapsedrealtime();在Adapter里自定义控件传参数剩余时间milleft的时候用mlillet-(SystemClock.elapsedrealtime()-A),这样就可以解决View的复用导致的时间不对。

记录下,参考博客地址https://blog.csdn.net/zw1234561024/article/details/82220917

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值