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()); } }
rxjava + rxandroid 调度器
最新推荐文章于 2022-10-05 14:25:22 发布