美文网首页Android开发经验谈android成神之路
android RecyclerView 频繁设置数据闪退问题

android RecyclerView 频繁设置数据闪退问题

作者: 我是李戴表 | 来源:发表于2016-08-10 10:41 被阅读9470次

    最近项目中一个播放的列表,有上下切换功能。测试频繁切换更换刷新数据时,报出以下错误:
    java.lang.IllegalArgumentException
    Scrapped or attached views may not be recycled. isScrap:false isAttached:true

    这个错误查了下,网上没有看到大神给出很给力的解答,stackoverflow上资料多一些,也是没怎么看明白。而且发生的情况还不一样。

    大概的问题就是频繁切换数据。我项目里在刷新的时候,会调用adapter.clear();清楚数据后再设置上去。而这个设置过程是说直接从一个空view突然到满屏的一个数据填充过程发生了错误。但是英文直译过来明显是说view有可能不被回收问题,不知道两者存在什么联系

    这个问题没明白为什么会出现,因为切换数据源时,慢慢切换,不会出现这种问题。测试那手速我不想描述。

    后来问了一哥们,说遇到同样的问题。解决了,然后我特意去找让他私下问了问,也没给我解释原因,说让我去看源码。不知道原因去看源码,这种情况就进入了懵逼状态。

    他给出的解决办法如下:

    我程序中原来的刷新逻辑是,adapter.clear() 然后adapter.addAll(list); 完事了,正常情况下确实也没问题。然后那哥们就说加上adapter.notifyDataSetChanged();这句试试。没其他辙加上了,让测试随便手速去切换数据,嗯,解决了。虽然不知道为什么。。。。(不是一个纯技术 人啊,没搞懂原因其实)。

    正常adapter.addAll(list)这句其实添加数据,是有刷新机制的,进去看了下源码不是整个列表notify的。所以猜测是不是更换所有数据,是要科学的去notify一次?

    所以这个错误,在加上

    adapter.notifyDataSetChanged()

    这句后,我这是没问题了。如果有朋友也遇到这个问题,实在找不出办法,加上这句试试。

    如果有大神遇到这个问题,并且知道具体原因,以及科学的有理有据的解决办法,希望分享出来让大家能沾沾光

    要是有冠希哥的外文水平+撩妹水平多好啊,以上~~~

    相关文章

      网友评论

        本文标题:android RecyclerView 频繁设置数据闪退问题

        本文链接:https://www.haomeiwen.com/subject/swydsttx.html