Android Rxjava +Retrofit +mvp网络框架封装
时间: 2023-12-08 14:05:51 浏览: 70
对于Android项目中的网络请求,RxJava、Retrofit和MVP是常用的框架组合。下面是一个简单的网络框架封装示例:
首先,在项目中引入RxJava和Retrofit的依赖。
```
implementation 'io.reactivex.rxjava2:rxjava:2.2.19'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
```
然后,创建一个Retrofit的单例类,用于进行网络请求的初始化和配置。
```java
public class RetrofitClient {
private static Retrofit retrofit;
private static final String BASE_URL = "https://api.example.com/";
public static Retrofit getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
return retrofit;
}
}
```
接下来,创建一个ApiService接口,定义网络请求的方法。
```java
public interface ApiService {
@GET("users")
Observable<List<User>> getUsers();
}
```
然后,创建一个DataManager类,用于管理网络请求。
```java
public class DataManager {
private ApiService apiService;
public DataManager() {
apiService = RetrofitClient.getClient().create(ApiService.class);
}
public Observable<List<User>> getUsers() {
return apiService.getUsers();
}
}
```
最后,在MVP的Presenter中调用DataManager类进行网络请求。
```java
public class UserPresenter {
private UserView userView;
private DataManager dataManager;
public UserPresenter(UserView userView) {
this.userView = userView;
dataManager = new DataManager();
}
public void getUsers() {
dataManager.getUsers()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<User>>() {
@Override
public void onSubscribe(Disposable d) {
// 在请求开始时的操作
}
@Override
public void onNext(List<User> users) {
// 请求成功返回数据时的操作
userView.showUsers(users);
}
@Override
public void onError(Throwable e) {
// 请求失败时的操作
userView.showError(e.getMessage());
}
@Override
public void onComplete() {
// 请求完成时的操作
}
});
}
}
```
这样,就完成了一个简单的Android RxJava + Retrofit + MVP网络框架封装。你可以根据自己的需要,进行进一步的封装和扩展。