<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Binder是為了解決跨進程通信。 關于Binder的文章實在是太多了,每篇文章都能從Java層講到C++層,App開發人員其實是沒必要了解這么多內容的。我們看對App開發有用的幾個點: 1)首先,Binder分為Client和Server兩個進程。 > **注意**,Client和Server是相對的。誰發消息,誰就是Client,誰接收消息,誰就是Server。 舉個例子,兩個進程A和B之間使用Binder通信,進程A發消息給進程B,那么這時候A是Binder Client,B是Binder Server;進程B發消息給進程A,那么這時候B是Binder Client,A是Binder Server——其實這么說雖然簡單了,但還是不太嚴謹,我們先這么理解著。 2)其次,我們看下面這個圖(摘自田維術的博客),基本說明白了Binder的組成解構: ![](http://images2015.cnblogs.com/blog/13430/201705/13430-20170516223325025-1448613892.png) 圖中的IPC就是進程間通信的意思。 圖中的ServiceManager,負責把Binder Server注冊到一個容器中。 有人把ServiceManager比喻成電話局,存儲著每個住宅的座機電話,還是很恰當的。張三給李四打電話,撥打電話號碼,會先轉接到電話局,電話局的接線員查到這個電話號碼的地址,因為李四的電話號碼之前在電話局注冊過,所以就能撥通;沒注冊,就會提示該號碼不存在。 對照著Android Binder機制,對著上面這圖,張三就是Binder Client,李四就是Binder Server,電話局就是ServiceManager,電話局的接線員在這個過程中做了很多事情,對應著圖中的Binder驅動 3)接下來我們看Binder通信的過程,還是摘自田維術博客的一張圖: ![](http://images2015.cnblogs.com/blog/13430/201705/13430-20170516223354650-984999229.png) > **注**:圖中的SM也就是ServiceManager。 我們看到,Client想要直接調用Server的add方法,是不可以的,因為它們在不同的進程中,這時候就需要Binder來幫忙了。 * 首先是Server在SM這個容器中注冊。 * 其次,Client想要調用Server的add方法,就需要先獲取Server對象, 但是SM不會把真正的Server對象返回給Client,而是把Server的一個代理對象返回給Client,也就是Proxy。 * 然后,Client調用Proxy的add方法,SM會幫他去調用Server的add方法,并把結果返回給Client。 以上這3步,Binder驅動出了很多力,但我們不需要知道Binder驅動的底層實現,涉及到C++的代碼了——把有限的時間去做更有意義的事情。 App開發人員對Binder的掌握,這些內容就足夠了。 **總結**: 學習Binder,是為了更好的理解AIDL,基于AIDL模型,進而了解四大組件的原理。 理解了Binder,再看AMS和四大組件的關系,就像是Binder的兩個進程Server和Client通信。
                  <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>

                              哎呀哎呀视频在线观看