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

猜你喜欢

转载自blog.csdn.net/qq_33330887/article/details/84339825