最近写了一份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
}
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(ListbeanList) { }
}
好了 这样我们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 ObservablegetImageInfo(@Url String url);
上边两个分别是初始化retrofit和,rxjava2注解。这样我们的三剑客已经齐备。
相关demo下载连接:https://download.csdn.net/download/qq_36118367/12328027
引入Glide加载就好啦,相关缓存、预加载的内容有空我会重新写一份~~
Demo做的比较着急,框架搭好后,其他的就可以自由发挥了。
效果: