rxjava實現相關邏輯

2021-07-24 16:34:14 字數 1495 閱讀 5188

observable.just(new person(5))

.map(new func1()

}).subscribeon(schedulers.io())

.doonsubscribe(new action0()

}).subscribeon(androidschedulers.mainthread())

.doonnext(new action1() catch (interruptedexception e)

log.i("tag", "doonnext"+thread.currentthread());

}});}})

.observeon(androidschedulers.mainthread())

.subscribe(new action1()

});

log如下:

11-17 09:18:18.386 12807-12807/com.example.administrator.day1116_testlambda i/tag: doonsubscribethread[main,5,main]

11-17 09:18:18.454 12807-12856/com.example.administrator.day1116_testlambda i/tag: mapthread[rxioscheduler-2,5,main]  5

11-17 09:18:18.494 12807-12807/com.example.administrator.day1116_testlambda i/tag: subscribethread[main,5,main]

11-17 09:18:20.474 12807-12857/com.example.administrator.day1116_testlambda i/tag: doonnextthread[rxioscheduler-3,5,main]

總結:1. 如果需要在執行一些耗時操作之前 , 想要在主線程實現一些邏輯(例如顯示等待條) , 那麼可以在doonsubscribe中實現 , 並且在其下方呼叫 subscribeon()指定主線程 , 如果不指定 , 它會存在一定的執行緒風險 , 也就是不一定會在主線程中執行 .

2. 如果在獲取相應的物件後 , 想要在工作執行緒實現一些邏輯(例如與存入資料庫等耗時操作) , 並且不想影響主線程的呈現 , 那麼可以在doonnext()方法中實現 .schedulers.io().createworker().schedule(指定action) 來實現 , 如果不這麼寫 , 以上面的例子它會執行在工作執行緒 , 但是onnext()方法會在doonnext方法執行完畢後才執行

. 也就是說 , onnext()方法會在 doonnext()在工作執行緒等待2秒鐘後 , 才在主線程執行onnext()方法 . 

3.如果以上述例子 , onnext(),doonnext()併發執行 , 那麼不要在doonnext()方法中 , 改變資料 . (這個還待測試).

RxJava2實現執行緒切換

被觀察者 observable 觀察者 observer 訂閱 subscribe 1 建立被觀察者 observable observable observable.create new observableonsubscribe 2 建立觀察者 observer observer new obs...

Payment相關邏輯

付款有手動付款和計畫程式自動付款兩種,照例先列出涉及到的概念 付款方式 paymenttypes 現金,支票,信用卡,等等 記賬型別 ledger acctranstypes 涉及到金錢往來的都需要記賬,簡單說就是收到的錢和支出的錢作何用途 手動付款 支援的付款方式有eft,cc,agent swe...

Payment相關邏輯

付款有手動付款和計畫程式自動付款兩種,照例先列出涉及到的概念 付款方式 paymenttypes 現金,支票,信用卡,等等 記賬型別 ledger acctranstypes 涉及到金錢往來的都需要記賬,簡單說就是收到的錢和支出的錢作何用途 手動付款 支援的付款方式有eft,cc,agent swe...