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.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪の星空朝酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值