美文网首页
android 超前下载图片

android 超前下载图片

作者: 貌似很有道理呢 | 来源:发表于2017-09-01 14:00 被阅读35次

大提前是修改用户信息需要客户端先将信息拉取下来,在传上去,这其实无可厚非,但奇葩的是图片也这么实现,先下载,再上传,通过与产品各种据理力争后,失败了,只能如此实现。
背景:有1,2,3,4三个按序的Fragment,在进入第一个Fragment时,进行多张图片下载,第4个Fragment展示使用,第3个Fragment即将跳转第4个Fragment时进行判断,若下载完成直接跳转,若未完成loading框提示等待,直到下载完成。
实现方法: 监听器+全局变量 (此全局变量写在Activity中,此4个fragment都可获得此变量) ,此处使用全局变量和监听器是缺一不可,使用全局变量可是在还没达到Fragment3时,也就是监听器还没new出来的时候,通知Fragment3下载完成;而是用监听器的作用是在Fragment3跳转Fragment4仍然没下载完成时,等待下载,知道下载完成再跳转

步骤1、在Fragment1中开启下载,下载结束后,监听器进行通知,更改全局变量。

public void downloadRejectImages(Map<String, AuthItem> images) {
        new AsyncImageLoader().loadImages(images, new AsyncImageLoader.ImageCallback() {
            @Override
            public void imageLoaded() {
                loadImageStatus = SUCC_MSG;
                if (mOnImageLoadListener != null) {
                    mOnImageLoadListener.onSuccess();
                }
            }
            @Override
            public void imageLoadFailed() {
                loadImageStatus = FAIL_MSG;
                if (mOnImageLoadListener != null) {       mOnImageLoadListener.onFailure();
                }
            }
        });  

步骤2、在Fragment3 new监听器

 ((RealNameActivity) mActivity).setOnImageLoadListener(new RealNameActivity.OnImageLoadListener() {
               @Override
               public void onSuccess() {
                   completeInfos();
               }

               @Override
               public void onFailure() {
                   completeInfos();
               }
           });  

步骤3、在触发Fragment3跳转Fragment4事件时,判断全局是标志位,是否下载成功,若不成功,转loading框,等待监听器通知

//此处就是标志位改变Fragment跳转代码,就不贴了  

这样就可完成保证到Fragment4时,下载操作完成。

相关文章

网友评论

      本文标题:android 超前下载图片

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