- @return fragment
*/
public Fragment getFragment() {
return this;
}
}`
2.1.5 BasePresenter
Presenter
的基类,
CompositeDisposable
主要用途是及时取消订阅,以防止内存泄漏,具体CompositeDisposable
的用法可参照[Rxjava关于Disposable你应该知道的事](()
`/**
- created by xucanyou666
- on 2020/1/16 17:12
- email:913710642@qq.com
/
public abstract class BasePresenter {
//将所有正在处理的Subscription都添加到CompositeSubscription中。统一退出的时候注销观察
private CompositeDisposable mCompositeDisposable;
private V baseView;
/* - 和View绑定
- @param baseView
/
public void attachView(V baseView) {
this.baseView = baseView;
}
/* - 解绑View,该方法在BaseMvpActivity类中被调用
/
public void detachView() {
baseView = null;
// 在界面退出等需要解绑观察者的情况下调用此方法统一解绑,防止Rx造成的内存泄漏
if (mCompositeDisposable != null) {
mCompositeDisposable.dispose();
}
}
/* - 获取View
- @return view
/
public V getMvpView() {
return baseView;
}
/* - 将Disposable添加,在每次网络访问之前初始化时进行添加操作
- @param subscription subscription
*/
public void addDisposable(Disposable subscription) {
//csb 如果解绑了的话添加 sb 需要新的实例否则绑定时无效的
if (mCompositeDisposable == null || mCompositeDisposable.isDisposed()) {
mCompositeDisposable = new CompositeDisposable();
}
mCompositeDisposable.add(subscription);
}
}`
2.1.6 MyApplication
- 封装了一个可以全局获取
Context
的方法,参考写法自:《第一行代码–第二版》- 注意:记得在
AndroidManifest
中注册Application
`package com.users.xucanyou666.rxjava2_retrofit_mvp.base;
import android.app.Application;
import android.content.Context;
/**
- 基类
- created by xucanyou666
- on 2019/11/2 14:46
- email:913710642@qq.com
- @author xucanyou666
*/
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}`
2.2 工具类 Util
2.2.1 RetrofitManager
Retrofit
单例工具类
`/**
- Retrofit单例工具类
- created by xucanyou666
- on 2020/1/16 16:38
- email:913710642@qq.com
/
public class RetrofitManager {
private Retrofit mRetrofit;
//构造器私有,这个工具类只有一个实例
private RetrofitManager() {
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.connectTimeout(15