Retrofit + RxJava + OkHttp 让网络请求变的简单

1.

MainActivity 

package com.bwie.rxjavatwodemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;

import java.util.List;

import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.Flowable;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private Disposable d;
    private Disposable d2;
    private Subscription sub;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

    }

    @OnClick({R.id.btn_conflict_01, R.id.btn_conflict_02, R.id.btn_conflict_03, R.id.btn_conflict_04, R.id.btn_conflict_05, R.id.btn_conflict_06})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.btn_conflict_01:
                // 被观察创建方式不同
//                Observable observable = Observable.from
//                Observable.create(new Observable.onSub)

                //没有Observable,onSubscribe,from  有obServable,onSubscribe
				//1.0
                Observable.create(new ObservableOnSubscribe<String>() {
                    @Override
                    public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {

                    }
                });

                break;
            case R.id.btn_conflict_02:
                Observable.just(1, 2, 3, 4)
                        .subscribe(new Observer<Integer>() {
                            @Override
                            public void onSubscribe(@NonNull Disposable d) {
                                MainActivity.this.d = d;
                            }

                            @Override
                            public void onNext(@NonNull Integer integer) {

                            }

                            @Override
                            public void onError(@NonNull Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });


                // Observable产生订阅的观察者不能是SubScriber
//                Observable.just(1,2,3,4)
//                        .subscribe(new SubSc)
                break;
            case R.id.btn_conflict_03:
                Flowable.just(1, 2, 3)
                        .subscribe(new Subscriber<Integer>() {
                            @Override
                            public void onSubscribe(Subscription s) {
                                MainActivity.this.sub = s;
                            }

                            @Override
                            public void onNext(Integer integer) {

                            }

                            @Override
                            public void onError(Throwable t) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });

//                Flowable.just(1,2,3).subscribe(new Observer<Integer>(){
//
//                    @Override
//                    public void onSubscribe(@NonNull Disposable d) {
//
//                    }
//
//                    @Override
//                    public void onNext(@NonNull Integer integer) {
//
//                    }
//
//                    @Override
//                    public void onError(@NonNull Throwable e) {
//
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });

                break;
            case R.id.btn_conflict_04:
//                方法名字变了
                Observable.just(1, 2, 3, 4)
                        // 没有Func1,Func0
                        .map(new Function<Integer, String>() {
                            @Override
                            public String apply(@NonNull Integer integer) throws Exception {
                                return String.valueOf(integer);
                            }
                        });
                // 没有Action0和Action1
//                        .subscribe(new Action1())
                break;
            case R.id.btn_conflict_05:
                Retrofit retrofit = new Retrofit.Builder()
                        .addConverterFactory(2222.create())
                        .addCallAdapterFactory(4
						
						
						
						
						
						
						.create())
                        .baseUrl("https://www.zhaoapi.cn/")
                        .build();

                ApiService apiService = retrofit.create(ApiService.class);

                apiService.getCategory()
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<MessageBean<List<Category>>>() {
                            @Override
                            public void onSubscribe(@NonNull Disposable d) {
                                MainActivity.this.d2 = d;
                            }

                            @Override
                            public void onNext(@NonNull MessageBean<List<Category>> listMessageBean) {
                                List<Category> data = listMessageBean.getData();
                                if (data != null) {
                                    Log.i(TAG, "onNext: " + data.size());
                                }
                            }

                            @Override
                            public void onError(@NonNull Throwable e) {

                            }

                            @Override
                            public void onComplete() {

                            }
                        });

                break;
            case R.id.btn_conflict_06:
                Observable.just(1, 2, 3, 4);
                // 取消了immediate这种线程变换方式
//                        .subscribeOn(Schedulers.immediate())
//                        .subscribeOn(Schedulers.)

                break;
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (d != null) {
            if (!d.isDisposed()) {
                d.dispose();
            }
        }
        if (d2 != null) {
            if (!d2.isDisposed()) {
                d2.dispose();
            }
        }
        if (sub != null) {
            sub.cancel();
        }
    }
}

2.Category

package com.bwie.rxjavatwodemo;

/**
 * Created by WuXirui
 * Create Time: 2017/12/5
 * Description:
 */

public class Category {


    /**
     * cid : 1
     * createtime : 2017-10-10T19:41:39
     * icon : http://120.27.23.105/images/category/shop.png
     * ishome : 1
     * name : 京东超市
     */

    private int cid;
    private String createtime;
    private String icon;
    private int ishome;
    private String name;

    public int getCid() {
        return cid;
    }

    public void setCid(int cid) {
        this.cid = cid;
    }

    public String getCreatetime() {
        return createtime;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public int getIshome() {
        return ishome;
    }

    public void setIshome(int ishome) {
        this.ishome = ishome;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
3.MessageBean<T>
package com.bwie.rxjavatwodemo;

/**
 * Created by WuXirui
 * Create Time: 2017/12/5
 * Description:
 */

public class MessageBean<T> {
    private String msg;
    private String code;
    private T data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

4.interface ApiService

package com.bwie.rxjavaonedemo;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;
import rx.Observable;

/**
 * Created by WuXirui
 * Create Time: 2017/12/5
 * Description:
 */

public interface ApiService {
    @GET("product/getCatagory")
    Observable<MessageBean<List<Category>>> getCatagory();
}






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值