<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 響應式方法:RxJava 因為已經[有很多這方面的文章](http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/),還有這方面[做得很好、令人景仰的人](https://speakerdeck.com/benjchristensen),所以我不打算在這里討論RxJava的好處([我假設您已經對它有所體驗了](https://github.com/ReactiveX/RxJava/wiki/))。但是,我將指出在Android應用程序開發方面的有趣之處,以及如何幫助我形成第一個清晰的架構的方法。 首先,我選擇了一種響應式的模式通過轉換usecase(在這個清晰的架構命名規則中,其被稱為interactor)返回Observables,表示所有底層都遵循這一鏈條,也返回Observables 。 ![](https://box.kancloud.cn/2015-09-21_55ff6fe947c54.jpg%3F_%3D21264)? 正如你所看到的,所有用例繼承這個抽象類,并實現抽象方法buildUseCaseObservable()。該方法將建立一個Observables,它承擔了繁重的工作,還要返回所需的數據。 需要強調是,在execute()方法中,要確保Observables 是在獨立線程執行,因此,要盡可能減輕阻止android主線程的程度。其結果就是會通過android主線程調度程序將主線程壓入線程隊列的尾部(push back)。 到目前為止,我們的Observables啟動并且運行了。但是,正如你所知,必須要觀察它所發出的數據序列。要做到這一點,我改進了presenters(MVP模式表現層的一部分),把它變成了觀察者(Subscribers),它通過用例對發出的項目做出“react”,以便更新用戶界面。 觀察者是這樣的: ![](https://box.kancloud.cn/2015-09-21_55ff6fe9a4c11.jpg%3F_%3D59117)? 每個觀察者都是每個presenter的內部類,并實現了一個Defaultsubscriber接口,創建了基本的默認錯誤處理。 將所有的片段放在一起后,通過下面的圖,你可以獲得完整的概念: ![](https://box.kancloud.cn/2015-09-21_55ff6fea038f9.jpg)? 讓我們列舉一些擺脫基于RxJava方法的好處: 在觀察者(Subscribers)與被觀察者(Observables)之間去耦合:更加易于維護和測試。 * 簡化異步任務:如果要求多個異步執行時,如果需要一個以上異步執行的級別,Java的thread和future的操作和同步比較復雜,因此通過使用調度程序,我們可以很方便地(不需要額外工作)在后臺與主線程之間跳轉,特別是當我們需要更新UI時。還可以避免“回調的坑”—— 它使我們代碼可讀性差,且難以跟進。 * 數據轉換/組成:在不影響客戶端情況下,我們能夠整合多個Observables,使解決方案更靈活。 * 錯誤處理:在任何Observables內發生錯誤時,就向消費者發出信號。 從我的角度看有一點不足,甚至要為此需要付出代價,那些還不熟悉概念的開發人員還是要遵循學習曲線。但你從中得到了極有價值的東西。為了成功而reactive起來吧!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看