編輯:關於Android編程
那從何學起?官網Wiki:https://github.com/ReactiveX/RxJava/wiki/How-To-Use-RxJava
先從簡單的from() 和just()方法開始,先看下例子實現的內容(2部分,一個類似於短信驗證碼等待的操作,一個就是遍歷數組打Log)
效果:
Log部汾喎?/kf/yidong/wp/" target="_blank" class="keylink">WPGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160330/20160330092944293.png" title="\" />
RxJava自帶了2個快捷創建事件隊列的方法 from() just()<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPsew1d+/ybSryOvSu7j2yv3X6aOsuvPV37/J0tS0q8jrtuC49rLOyv3Iu7rzxdzSu7j2Y2FsbKOoo6m1xLvYtfehozwvcD4NCjxwPrT6wuvI58/Co7o8L3A+DQo8cHJlIGNsYXNzPQ=="brush:java;">
像這邊的行為類似於我們的 for循環然後每一個循環裡println一個數,那麼問題來了,這代碼量看上去還比for長一點,有什麼優勢? 賣個關子我們看第二個例子 效果圖中我們的按鈕的字在不斷的被刷新,類似的效果可以用Handler或者是RunOnUiThread(好像大小寫有拼錯,懶得查了理解就好)實現,那又為什麼用RxJava呢? 看代碼說話 在類裡面聲明了我們的觀察者和被觀察者,被觀察者進行著我們的業務邏輯,觀察者做監聽。 這裡看完觀眾們又要問了,這代碼量也沒少啊,RxJava優勢在哪? 那我們再貼一段 在我們的btn1的click行為裡我們做了這麼個操作,子線程執行邏輯內容,主線程刷UI。 優勢在哪: 無論你的程序邏輯變得多麼的復雜,代碼構造依然整潔明了。 那既然提到了異步的內容,這邊來說一下負責線程操作的類Scheduler 默認情況下哪走了subscribe()哪個線程就要干這件事 來例舉下可用的一些工作狀態 .immediate() :默認狀態,哪用算哪 .newThread(): 開新線程做這件事 .io(): 跟newThread()差不多,不過在線程池大小上有差異,他是無限大 .computation():跟創建固定的線程池操作 .mainThread():在主線程做事 那既然說到了線程內容,再補充下如何設置線程 subscribeOn(): subscribe() 所發生的線程,也就是干活的線程 observeOn(): Subscriber 所運行在的線程,也就是的回調發生的線程 在例子中我有打出具體的線程ID,我們來看一下 主線程的 工作線程的 也就應正了這一點,我們可以決定我們要做的操作在哪執行,反復強調,異步!!!!讓主線程盡量少干活(或者說,讓他干他應該干的活) Observable.just(1, 3, 4, 5, 6).subscribe(new Action1
Observable.just(1, 3, 4, 5, 6).subscribeOn(Schedulers.newThread()).subscribe(new Action1
btn1Observable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(btn1Oserver);
現在我來回答剛才的疑問
1.所有的行為都有相應的回調,而不用我們人工去申明額外的回調函數
2.異步,異步,異步!!!重要的事情說三遍
03-28 16:08:30.878 8717-8717/sample.wjj.rxandroidglidedemo D/LogUtils-MainActivity.onCreate(MainActivity.java:129): --->Main Thread id 1
03-28 16:46:20.358 8717-6259/sample.wjj.rxandroidglidedemo D/LogUtils-MainActivity$3.call(MainActivity.java:91): 子線程id 3489
public class SocialTokenActivity extends Activity { SocialContactsCompletionVie
類概述Android裡Scroller類是為了實現View平滑滾動的一個Helper類。通常在自定義的View時使用,在View中定義一個私有成員mScroller =
一個通常的錯誤觀念就是使用基本的布局結構(例如:LinearLayout、FrameLayout等)能夠在大多數情況下 產生高效率 的
昨天晚上,華為在上海召開發布會,正式發布了旗下的新機榮耀8。華為榮耀8可謂是千呼萬喚始出來,此前傳聞榮耀8比榮耀V8做工更精致,顏值更高,今日初窺廬山真面目