RxAndroid的使用方式1-基础
RxAndroid的使用方式
RxAndroid是RxJava的扩展, 可以优雅地处理异步请求. 以前的文章讲述过一些, 这次再补充些内容, 熟悉RxAndroid的使用方法.
对应github的网址
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
https://github.com/JakeWharton/butterknife
https://github.com/evant/gradle-retrolambda
添加Gradle配置 在app下的build.gradle如下:
apply plugin: 'android-apt'
android {
...
}
dependencies {
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'
compile 'com.jakewharton:butterknife:8.2.1'
apt 'com.jakewharton:butterknife-compiler:8.2.1'
}
在根目录下的build.gradle如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
1.SimpleActivity
先定义全局变量
Observable.OnSubscribe<String> mOnSubscribe;//观察者
Subscriber<String> mSubscriber1;//订阅者
Subscriber<String> mSubscriber2;
//ButterKnife控件查找
@BindView(R.id.textView)
TextView mTvText;
首先要绑定nutterknife,然后初始化对应观察者和订阅者,最后绑定到一起
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple);
ButterKnife.bind(this);
initObservable();
initSubscriber1();
initSubscriber2();
bindinit();
}
初始化的代码如下:创建一个观察者, 收到字符串的返回。创建两个订阅者, 使用字符串输出信息。
private void initObservable(){
mOnSubscribe = new Observable.OnSubscribe<String>() {
@Override public void call(Subscriber<? super String> subscriber) {
subscriber.onNext(sayHellow()); // 发送事件
subscriber.onCompleted(); // 完成事件
}
};
}
private void initSubscriber1(){
mSubscriber1 = new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
Toast.makeText(SimpleActivity.this,s,Toast.LENGTH_LONG).show(); // 设置文字
}
};
}
private void initSubscriber2(){
mSubscriber2 = new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
mTvText.setText(s); // 设置文字
}
};
}
private String sayHellow() {
return "欢迎使用";
}
绑定的代码如下:观察者接收信息, 发送至主线程AndroidSchedulers.mainThread(), 再传递给订阅者, 由订阅者最终处理消息. 接收信息可以是同步, 也可以是异步.
private void bindinit() {
Observable<String> observable = Observable.create(mOnSubscribe);
observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe(mSubscriber1);
observable.subscribe(mSubscriber2);
}