RxJava+Retrofit结合使用-网络请求-封装

1.首先导入依赖跟权限:

 

//ButterKnife-依赖:
    compile 'com.jakewharton:butterknife:8.5.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
    //fresco依赖:
    compile 'com.facebook.fresco:fresco:+'
    //fresco加载gif依赖:
    compile 'com.facebook.fresco:animated-gif:+'
    //Retrofit+Rxjava依赖:
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
    compile 'io.reactivex:rxandroid:1.2.0'
    //recyclerview
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
    //底部第三方
    compile 'com.hjm:BottomTabBar:1.1.1'
    //Banner图
    compile 'com.youth.banner:banner:1.4.10'
    //Imageloader
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    //Glide
    compile 'com.github.bumptech.glide:glide:3.6.1'
    //TabLayout
    compile 'com.android.support:design:23.3.0'
    //floatingactionbutton
    compile 'com.getbase:floatingactionbutton:1.9.0'
    //二维码
    compile 'cn.yipianfengye.android:zxing-library:2.2'
    //刷新控件springview

    compile 'com.liaoinstan.springview:library:1.2.6'

    //拦截器
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'


权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />


二维码权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />


<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />


<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

2.我们创建一个类用来存放我们使用到的所有接口

例如:

public class MYAPI {

//登录

 public static final String LOGIN="user/login";

//注册

public static final String REGISTER="user/reg";

}

3.创建一个接口,里面存放我们的请求方式以及拼接到的参数

例如:

public interface RetrofitService {

//登录
    @FormUrlEncoded
    @POST(MyAPI.LOGIN)
    Observable<LoginBean> login(@Field("mobile") String mobile,
                                @Field("password") String password
                                );
    //注册
    @FormUrlEncoded
    @POST(MyAPI.REG)
    Observable<RegBean> reg(@Field("mobile") String mobile,

                            @Field("password") String password);

}

4.创建一个封装类。

public class  RetrofitHelper {

    public Context mCntext;

   //初始化
   OkHttpClient interceptor = new OkHttpClient();

    //gson工厂
    GsonConverterFactory factory = GsonConverterFactory.create(new GsonBuilder().create());
    private static RetrofitHelper instance = null;
    private Retrofit mRetrofit = null;
    //单例模式
    public static RetrofitHelper getInstance(Context context){
        if (instance == null){
            instance = new RetrofitHelper(context);
        }
        return instance;
    }
    private RetrofitHelper(Context mContext){
        mCntext = mContext;

        init();
    }


    private void init() {
        resetApp();
    }

    private void resetApp() {

//拦截器

    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);

        //初始化retrofit
        mRetrofit = new Retrofit.Builder()
                .baseUrl("http://120.27.23.105/")
                .client(interceptor)
                .addConverterFactory(factory)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
    }
    public RetrofitService getServer(){
        return mRetrofit.create(RetrofitService.class);
    }

}

5.最后,我们创建一个网络请求类就能使用Retrofit+RxJava了

public class DataManager {
    private RetrofitService mRetrofitService;

    //构造器里获取RetrofitService
    public DataManager(Context context) {
        this.mRetrofitService = RetrofitHelper.getInstance(context).getServer();
    }

    //网络请求方法getSearchBooks
     //登录
    public Observable<LoginBean> getlogin(String mobile,String password){
        return mRetrofitService.login(mobile, password);
    }
    //注册
    public Observable<RegBean> getreg(String mobile,String password){
        return mRetrofitService.reg(mobile,password);
    }

}


Fresco加载图片:

public class MyApp extends Application {


    private static MyApp mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance=this;
        Fresco.initialize(this);
        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
        ImageLoaderConfiguration defaultcof = ImageLoaderConfiguration.createDefault(getApplicationContext());
        ImageLoader.getInstance().init(build);


    }
    public static MyApp getInstance(){
        return mInstance;
    };

}

//避免内存泄漏

P层

   public void detachView() {
        if (iv != null) {
            iv = null;
        }

    }

主页面

 @Override
    protected void onDestroy() {
        super.onDestroy();
        if (presenter != null) {
            presenter.detachView();
            presenter = null;
        }

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值