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()); } }
相关文章推荐
- Android 开机自启或干其他事情
- Android 绘图(二) Canvas
- Android学习一(windows安装Git)
- Android DownloadManager 的使用
- android系统的启动逻辑01
- Android Studio 项目目录结构 英文版
- android跨进程通信(IPC):使用AIDL
- Android 修改厂商信息
- Android随VierPager滑动的导航栏
- Android解析Json数据之FastJson解析
- Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRID
- 最新基于高德地图的android进阶开发(2)小试牛刀
- Android中ProgressBar自定义进度条的高度、颜色、圆角
- 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势
- Android 防止popup window遮挡软键盘
- Android开发中发送Get请求的实例
- Android Studio 的常用快捷键
- android:configChanges="orientation|keyboardHidden"的使用
- Android绘图——圆圈+水波
- 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势