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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Binder是Android系統提供的一種IPC(進程間通信)機制。由于Android是基于Linux內核的,因此,除了Binder外,還存在其他的IPC機制,例如管道和socket等。Binder相對于其他IPC機制來說,就更加靈活和方便了。對于初學Android的朋友而言,最難卻又最想掌握的恐怕就是Binder機制了,因為Android系統基本上可以看作是一個基于Binder通信的C/S架構。Binder就像網絡一樣,把系統各個部分連接在了一起,因此它是非常重要的。 在基于Binder通信的C/S架構體系中,除了C/S架構所包括的Client端和Server端外,Android還有一個全局的ServiceManager端,它的作用是管理系統中的各種服務(Service)。Client、Server和ServiceManager這三者之間的交互關系,如圖6-1所示 : :-: ![](http://img.blog.csdn.net/20150802155713567?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 圖6-1 Client、Server和ServiceManager三者之間的交互關系 >[info] **注意**:一個Server進程可以注冊多個Service,就像即將講解的MediaServer一樣。 根據圖6-1,可以得出如下結論: - Server進程要先注冊一些Service到ServiceManager中,所以Server是ServiceManager的客戶端,而ServiceManager就是服務端了。 - 如果某個Client進程要使用某個Service,必須先到ServiceManager中獲取該Service的相關信息,所以Client是ServiceManager的客戶端。 - Client根據得到的Service信息建立與Service所在的Server進程通信的通路,然后就可以直接與Service交互了,所以Client也是Server的客戶端。 - 最重要的一點是,三者的交互都是基于Binder通信的,所以通過任意兩者之間的關系,都可以揭示Binder的奧秘。 這里,要重點強調的是Binder通信與C/S架構之間的關系。Binder只是為C/S架構提供了一種通信的方式,我們完全可以采用其他IPC方式進行通信,例如,系統中有很多其他的程序采用的就是Socket或Pipe的方法進行進程間通信。很多初學者可能覺得Binder較復雜,尤其是看到諸如BpXXX、BnXXX之類的定義便感到頭暈,這很有可能是把Binder通信層結構和應用的業務層結構搞混了。如果能搞清楚這二者的關系,完全可以自己實現一個不使用BpXXX和BnXXX的Service。須知,ServiceManager可并沒有使用它們。
                  <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>

                              哎呀哎呀视频在线观看