Retrofit + RxJava + OkHttp 让网络请求变的简单
2017-12-06 00:17
393 查看
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 Ac
a369
tion1())
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>
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();
}
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 Ac
a369
tion1())
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();
}
相关文章推荐
- Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- RxJava+Retrofit+OkHttp组合在网络请求中的简单配置
- Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- 使用Retrofit和Rxjava让你的网络请求更简单
- Retrofit+Rxjava简单的请求网络数据
- RxJava与Retrofit封装简单的网络请求(二)
- OkGo,一个专注于让网络请求更简单的框架,与RxJava完美结合,比Retrofit更简单易用。
- Renovace :一款基于Retrofit & RxJava 实现简单易用的网络请求框架
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- android 网络请求Retrofit+rxjava+okhttp 轻封装
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Android Retrofit+rxjava+okhttp请求网络的基本用法
- Android 框架设计Demo,一个简单的MVP示例搜索功能,网络请求用Retrofit+RxJava实现
- Retrofit+Rxjava 网络请求的简单封装(一)(观察者模式)
- Android RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)