android 超前下載圖片

大提前是修改用戶信息需要客戶端先將信息拉取下來,在傳上去,這其實無可厚非,但奇葩的是圖片也這么實現,先下載,再上傳,通過與產品各種據理力爭后,失敗了,只能如此實現。
背景:有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時,下載操作完成。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容