1.首先在学习的过程中,最初以为rxjava是网络请求框架,但其实并非如此,在看了几个博客(
http://blog.csdn.net/Job_Hesc/article/details/45798307
)后才知道,rxjava原来是一个同handler+thread功能相仿的东西,android中常用rxjava+Retrofit来处理网络请求+数据处理,单独的rxjava只起到处理线程的功能。因此如果只考虑rxjava的话我们就当做handler+thread的另一种实现方式好了。
2.rxjava普通写法:
简略结构:
//1.用Observable.create()方法创建Observable实例;
Observable observable =
Observable.create
(new Observable.OnSubscribe<Object>(){
try{
//2.重写call方法
public void call(Subscriber<?super Object> subscriber){
//3.执行网络请求获取封装类对象(或者其他业务逻辑处理,一般结合网络请求用)
Object object = gethttp();
//4.发布事件通知订阅者(通知者是幕后去处理这个object的不需要考虑是如何处理的)
subscriber
.onNext(object);
//5.事件通知完成
subscriber.oncompleted();
}catch(
Exception
e
){
//6.出现异常,通知订阅者
subscriber.onError(e);
}
}
//7.让Observable运行在新线程中(因为执行了网络请求需要异步)
} ).
subscribeOn(Schedulers.
newThread
())
//8.让subscriber运行在主线程中(因为要在主线程中进行UI界面刷新)
.observeOn(AndroidSchedulers.
mainThread
())
.subscribe(
new
Subscriber<object>() {
//9.重新onNext()\onCompleted()\onError()方法对应上面4、5、6
public void
onCompleted() {
//对应上面的第5点:subscriber.onCompleted();
//这里写事件发布完成后的处理逻辑
}
@Override
public void
onError(Throwable e) {
//对应上面的第6点:subscriber.onError(e);
//这里写出现异常后的处理逻辑
Toast.
makeText
(
context
, e.getMessage(), Toast.
LENGTH_SHORT
).show();
}
@Override
public void
onNext(Object object) {
//对应上面的第4点:subscriber.onNext(object);
//这里写获取到某一个事件通知后的处理逻辑
if
(object!=
null
)
Toast.makeText(context, object.tostring(), Toast.LENGTH_SHORT).show();
}
});
}
这里只是浅浅的读了下rxjava,帮各位对rxjava有一个了解,其他深入的理解,还需要各位同学去继续努力,
这里只是浅浅的读了下rxjava,帮各位对rxjava有一个了解,其他深入的理解,还需要各位同学去继续努力,