您的位置:首页 > 移动开发 > Android开发

rxjava + rxandroid 调度器

2016-07-18 11:23 302 查看
package com.example.administrator.rxjavatest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import rx.Observable;
import rx.Scheduler;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class MainActivity extends AppCompatActivity {
Observable<String> mObservable;
Subscriber<String> mSubscriber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mObservable= Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
printThread("mObservable-->Call");
subscriber.onNext("需要被消费的事件(注册了消费关系的Observable)"); //-->onNext(String s)
//                int a = 1/0; //-->onError(Throwable e) 如果此方法执行,则onCompleted()不会被执行
subscriber.onCompleted(); //结束 -->onCompleted()
}
});
mSubscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
toast("Obsever onCompleted");
}

@Override
public void onError(Throwable e) {
toast("onError:"+e.getMessage());
}

@Override
public void onNext(String s) {
printThread("mSubscriber-->onNext");
toast("onNext收到的信息:"+s);
}
};
}
public void click(View v){
//subscribeOn 设置可观察对象的调度器 Schedulers.io()指定到新线程中运行
//observeOn 设置以一个android可更新页面的调度器 subscribeOn(AndroidSchedulers.mainThread()) 指定运行在主线程
//compile 'io.reactivex:rxandroid:1.2.1' 引入rxandorid
//建立订阅关系
mObservable.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io()).
subscribe(mSubscriber);
}
public void toast(String s){
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}

public void printThread(String s){
System.out.println(s+"thread:"+Thread.currentThread().getName());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: