美文网首页
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