大提前是修改用户信息需要客户端先将信息拉取下来,在传上去,这其实无可厚非,但奇葩的是图片也这么实现,先下载,再上传,通过与产品各种据理力争后,失败了,只能如此实现。
背景:有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时,下载操作完成。
网友评论