Mvp架构+Retrofit+rxjava2+Glide 实现网络图片加载

最近写了一份demo,整理了下最近使用的框架,首先介绍下体系呗:

Mvp:一种衍生于mvc的设计模式,比mvc的优点好处在于m跟v分离的明确,m只负责data,v只负责view显示,p负责获取data给v进行显示。当然现在有更好的mvvm设计模式,mvp只属于mvvm的一个中间版,但是对于正常的项目应用是够用了,笔者对于mvvm的使用较少,等有空的时候会多研究下。

 

Retrofit+rxjava2:为啥不用okgo或者okhttp,他们的作者是相同的,可能是因为retrofit一直在更新的原因吧。。。Okhttp已经2年没更新了,retrofit用的更广泛,遇到问题解决起来可能也会更方便,在数据安全上也更有保障。

 

Glide:近几年挺火的一款图片加载框架,优点在于可以缓存跟预加载。

 

先来说下mvp框架吧:

具体代码如下:

public interface SearchContract {
   
interface View extends BaseView<SearchContract.Presenter> {
       
void showImageInfo(List<ImageBean.ListBean> list);
   
}

   
interface Presenter extends BasePresenter {
       
void loadImageInfo(String location);
   
}
}

 

可以看到 我们创建了一个关联类,View跟presenter,分别对应mvp中的v跟p,用我们的Activity或者fragment 来实现view,然后p来实现定义好的presenter。

相关实现如下:

P:

public class SearchPresenter implements SearchContract.Presenter {

    private static final String TAG = SearchPresenter.class.getSimpleName();

    private Context mContext;

    private SearchContract.View mSearchView;

    private WorkRepositoryImpl mWork;

    private String mLocation;



    public SearchPresenter(Context context, SearchContract.View view, String location) {

        mContext = context;

        mSearchView = view;

        mLocation = location;

        mWork = WorkRepositoryImpl.getInstance();

    }

 

v:

public class SearchActivity extends BaseActivity implements SearchContract.View {
@Override

public void showImageInfo(List<ImageBean.ListBean> beanList) {

   }
}

 

好了 这样我们mvp体系已经搭建完毕,在p中可以进行数据交互,把从服务器获取的数据或本地数据库获取的数据传递给view进行使用,view只负责显示,数据的获取一定要在p中进行哦,否则就是mvc了。。。

总结:与mvc相比,mvp通过p把v跟m分离,使代码更清晰,比如数据方面出了问题,直接去找m,界面出了问题直接去找v,这样定位问题,解决问题会更加效率。

 

 

随后,我们来讲下retrofit+rxjava2

老规矩先上代码:

/**

 * 初始化Retrofit

 */

public Api initRetrofit() {

    Retrofit mRetrofit = new Retrofit.Builder()

            .client(XyxApplication.initOKHttp())

            // 设置请求的域名

            .baseUrl(ApiAddress.URL)

            // 设置解析转换工厂

            .addConverterFactory(GsonConverterFactory.create())

            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())

            .build();

    return mRetrofit.create(Api.class);

}

 

 


@GET

Observable<ImageBean> getImageInfo(@Url String url);

 

上边两个分别是初始化retrofit和,rxjava2注解。这样我们的三剑客已经齐备。

相关demo下载连接:https://download.csdn.net/download/qq_36118367/12328027

 

引入Glide加载就好啦,相关缓存、预加载的内容有空我会重新写一份~~

Demo做的比较着急,框架搭好后,其他的就可以自由发挥了。

效果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值