<wbr id="jl7f7"></wbr>

        <i id="jl7f7"></i>
          <acronym id="jl7f7"></acronym>

          <s id="jl7f7"></s>

          <ins id="jl7f7"></ins><button id="jl7f7"><strong id="jl7f7"></strong></button>
          鍍金池/ 教程/ Android/ Reservoirs and parallelism
          Custom observables
          Compiled functions
          Reactive programming
          Reservoirs and parallelism
          Incrementally Agerifying legacy code
          Observables and updatables
          Compiled repositories
          Repositories

          Reservoirs and parallelism

          由于_push event, pull data_模型和多線(xiàn)程情況下,觀(guān)察者可能看不到數據全部的更新記錄(ps:因為總是獲取最新的數據)。這是特意設計的: 因為大多數情況下(尤其更新app UI), 本來(lái)就只需要關(guān)心最新的數據。 然而, 如果客戶(hù)端(一般很少)想知道全部的變化歷史記錄, Agera 提供Repository的子類(lèi)型: Reservoir,可以滿(mǎn)足這種場(chǎng)景。

          Reservoir是一個(gè)響應版本隊列。數據可以通過(guò)Receiver接口加入隊列,然后發(fā)起通知事件,然后觀(guān)察者可以從隊列中讀取數據(Repository.get())。

          Reservoir隊列的訪(fǎng)問(wèn)是完全同步的,所以不會(huì )出現兩個(gè)客戶(hù)端從隊列中讀取到同一個(gè)數據(ps:就是線(xiàn)程安全)。 如果相同的值放入隊列多次,這也會(huì )認為是不同的實(shí)例(ps:就是會(huì )生成多次通知事件)。

          if the same value (the same Java object reference) is enqueued multiple times, they are different instances in the context of a reservoir).

          返回數據類(lèi)型是Result, 所以如果客戶(hù)端嘗試從空隊列讀取數據的時(shí)候,可以接收Result.absent()作為一個(gè)失敗的通知。

          基于這種行為,Reservoir非常適合必須處理事件源的每一個(gè)數據的響應。 這種響應可以使用[[compiled repository|Compiled-repositories]]實(shí)現。

          如果合適的話(huà),可以用Reservoir作為事件源,使用.attemptGetFrom(reservoir).orSkip()作為數據處理流程的開(kāi)始指令。

          一旦repository激活,Reservoir中的觀(guān)察者模式就會(huì )建立好(ps:消費者和生產(chǎn)者的模式)。

          使用Reservoir可以實(shí)現簡(jiǎn)單的并行任務(wù),使用多個(gè)repository提供事件源和數據源,任務(wù)放入隊列,然后每個(gè)repository去執行數據處理流程。

          注意:為了做到并行執行,repository都需要提交到線(xiàn)程池執行或者運行在不同的工作Looper(worker Loopers)。

          上一篇:Repositories
          日韩性做爰免费a片aa片,天天躁恨恨躁夜躁2020,精品久久综合1区2区3区激情,精产国品一二三产品麻豆

          <wbr id="jl7f7"></wbr>

                <i id="jl7f7"></i>
                  <acronym id="jl7f7"></acronym>

                  <s id="jl7f7"></s>

                  <ins id="jl7f7"></ins><button id="jl7f7"><strong id="jl7f7"></strong></button>