SherlockGougou / BigImageViewPager

🔥🔥🔥 BigImage ImageView ViewPager 支持超长图、超大图的图片浏览器,优化内存,支持手势放大、下拉关闭、查看原图、加载百分比、保存图片等功能。
Other
2.15k stars 248 forks source link

当存在重复图片地址时,显示黑屏 #107

Closed wangshyandroid closed 4 years ago

wangshyandroid commented 4 years ago

测试的时候随意复制了 九个一模一样的url 然后 就会出现 黑屏 和 闪一下就没了

黑屏异常

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference at cc.shinichi.library.view.helper.SubsamplingScaleImageViewDragClose$BitmapLoadTask.doInBackground(SubsamplingScaleImageViewDragClose.java:3200) at cc.shinichi.library.view.helper.SubsamplingScaleImageViewDragClose$BitmapLoadTask.doInBackground(SubsamplingScaleImageViewDragClose.java:3179)

闪一下 就没 是没有异常信息的

SherlockGougou commented 4 years ago

图片的内存缓存的key使用的是图片的url MD5后的值,所以在item滑动消失后,会对该url的内存进行清理。

PS:真实场景不存在这种情况吧。如果真的有需求,可以在图片的url后拼接:?position=图片的索引

nideshouhei commented 3 years ago

?position=图片的索引 这个方法没有用啊,该黑还是黑啊,我现在就是有这个需求

SherlockGougou commented 3 years ago

在构造imageUrl列表时,按照如下规则增加position标识:

List<String> urlList = 你自己的图片源;
        List<String> imageList = new ArrayList<>();
        for (int i = 0; i < urlList.size(); i++) {
            String url = urlList.get(i);
            if (url.contains("?")) {
                imageList.add(url + "&positon=" + i);
            } else {
                imageList.add(url + "?positon=" + i);
            }
        }
        // 然后使用imageList,传入框架即可