大提前是修改用戶信息需要客戶端先將信息拉取下來(lái)铡原,在傳上去偷厦,這其實(shí)無(wú)可厚非,但奇葩的是圖片也這么實(shí)現(xiàn)燕刻,先下載只泼,再上傳,通過(guò)與產(chǎn)品各種據(jù)理力爭(zhēng)后卵洗,失敗了请唱,只能如此實(shí)現(xiàn)弥咪。
背景:有1,2十绑,3聚至,4三個(gè)按序的Fragment,在進(jìn)入第一個(gè)Fragment時(shí)本橙,進(jìn)行多張圖片下載扳躬,第4個(gè)Fragment展示使用,第3個(gè)Fragment即將跳轉(zhuǎn)第4個(gè)Fragment時(shí)進(jìn)行判斷甚亭,若下載完成直接跳轉(zhuǎn)贷币,若未完成loading框提示等待,直到下載完成亏狰。
實(shí)現(xiàn)方法: 監(jiān)聽(tīng)器+全局變量 (此全局變量寫(xiě)在Activity中役纹,此4個(gè)fragment都可獲得此變量) ,此處使用全局變量和監(jiān)聽(tīng)器是缺一不可暇唾,使用全局變量可是在還沒(méi)達(dá)到Fragment3時(shí)促脉,也就是監(jiān)聽(tīng)器還沒(méi)new出來(lái)的時(shí)候,通知Fragment3下載完成信不;而是用監(jiān)聽(tīng)器的作用是在Fragment3跳轉(zhuǎn)Fragment4仍然沒(méi)下載完成時(shí)嘲叔,等待下載亡呵,知道下載完成再跳轉(zhuǎn)
步驟1抽活、在Fragment1中開(kāi)啟下載,下載結(jié)束后锰什,監(jiān)聽(tīng)器進(jìn)行通知下硕,更改全局變量。
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監(jiān)聽(tīng)器
((RealNameActivity) mActivity).setOnImageLoadListener(new RealNameActivity.OnImageLoadListener() {
@Override
public void onSuccess() {
completeInfos();
}
@Override
public void onFailure() {
completeInfos();
}
});
步驟3梭姓、在觸發(fā)Fragment3跳轉(zhuǎn)Fragment4事件時(shí),判斷全局是標(biāo)志位嫩码,是否下載成功誉尖,若不成功,轉(zhuǎn)loading框铸题,等待監(jiān)聽(tīng)器通知
//此處就是標(biāo)志位改變Fragment跳轉(zhuǎn)代碼铡恕,就不貼了
這樣就可完成保證到Fragment4時(shí),下載操作完成丢间。