AndroidRxAndroid使用

凌浩雨發表於2017-08-22

實現類似定時器功能

  1. 依賴
compile `io.reactivex.rxjava2:rxandroid:2.0.1`
compile `io.reactivex.rxjava2:rxjava:2.1.3`

2.佈局檔案中只是簡單的TextView控制元件來顯示文字。目前涉及到及所瞭解的RxAndroid與RxJava中多用到的是 .observeOn(AndroidSchedulers.mainThread()),通知主執行緒這一塊,其它不同還未涉及到。RxAndroid在使用時使用RxJava(Java RxJava學習使用)中的方法,


  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView textView = (TextView) findViewById(R.id.textView);
    Observable
        .just("one", "two", "three", "four", "five")// 資料來源
        .map(new Function<String, String>() {
          @Override public String apply(@NonNull String s) throws Exception {
            Log.e("TAG",Thread.currentThread().getName()); // 列印io執行緒名
            Thread.sleep(1000); // 執行緒睡眠1秒鐘
            return s;
          }
        })
        .subscribeOn(Schedulers.io()) // 將以上程式碼訂閱在io執行緒
        .observeOn(AndroidSchedulers.mainThread()) // 通知主執行緒
        .subscribe(new Consumer<String>() { // 主執行緒訂閱
          @Override public void accept(String s) throws Exception {
            Log.e("TAG",Thread.currentThread().getName()); // 列印當前執行緒名
            textView.setText(s);
          }
        });
  }


相關文章