Android简易音乐重构MVVM Java版-LiveData+用户登录+http模块(十)
关于
本篇内容主要是http模块(retrofit+okhttp3)重构,以及登录页面的重构。
效果图

app启动图标在上篇放出的百度网盘链接里面有对应图片。
添加http模块
结构图如下:

添加 ApiService
import androidx.lifecycle.LiveData;
import com.tobery.livedata.call.livedatalib.ApiResponse;
import com.tobery.personalmusic.entity.Login_Bean;
import com.tobery.personalmusic.entity.MainRecommendListBean;
import com.tobery.personalmusic.entity.SearchHotDetail_Bean;
import com.tobery.personalmusic.entity.banner_bean;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ApiService {
@GET("banner")
LiveData<ApiResponse<banner_bean>> getBanner(@Query("type") int type);
@GET("login/cellphone")
Observable<Login_Bean> login(@Query("phone") String phone, @Query("password") String password);
}
添加RetrofitUtils请求网络api
public class RetrofitUtils {
/**
* 单例模式
*/
public static ApiService apiService;
public static ApiService getmApiUrl(){
if (apiService == null){
synchronized (RetrofitUtils.class){
if (apiService == null){
apiService = new RetrofitUtils().getRetrofit();
}
}
}
return apiService;
}
private ApiService getRetrofit() {
//初始化Retrofit
ApiService apiService = initRetrofit(initOkHttp()).create(ApiService.class);
return apiService;
}
private OkHttpClient initOkHttp() {
//ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(MyApplication.getContext()));
return new OkHttpClient().newBuilder()
.readTimeout(Constant.DEFAULT_TIME, TimeUnit.SECONDS) //设置读取超时时间
.connectTimeout(Constant.DEFAULT_TIME,TimeUnit.SECONDS) //设置请求超时时间
.writeTimeout(Constant.DEFAULT_TIME,TimeUnit.SECONDS) //设置写入超时时间
.addInterceptor(new LogInterceptor()) //添加打印拦截器
.retryOnConnectionFailure(true) //设置出错进行重新连接
//.cookieJar(cookieJar)
.build();
}
/**
* 初始化Retrofit
*/
@NonNull
private Retrofit initRetrofit(OkHttpClient client){
return new Retrofit.Builder()
.client(client)
.baseUrl(Constant.BaseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(LiveDataCallAdapterFactory.create())//livedataFactory
.addConverterFactory(GsonConverterFactory.create())
.build();
}
}
添加RXHelper用于线程切换
public class RXHelper {
public static <T> ObservableTransformer<T, T> observableIO2Main(final Context context) {
return upstream -> {
Observable<T> observable = upstream.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
return composeContext(context, observable);
};
}
public static <T> ObservableTransformer<T, T> observableIO2Main(final RxFragment fragment) {
return upstream -> upstream.

最低0.47元/天 解锁文章





