<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國際加速解決方案。 廣告
                如果讀者讀過卷I第6章“深入理解Binder”,相信就不會對Binder架構中代表Client的Bp端及代表Server的Bn端感到陌生。Java層中Binder實際上也是一個C/S架構,而且其在類的命名上盡量保持與Native層一致,因此可認為,Java層的Binder架構是Native層Binder架構的一個鏡像。Java層的Binder架構中的成員如圖2-1所示。 :-: ![](http://img.blog.csdn.net/20150806154310702?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center) 圖 2 - 1 Java層中的Binder家族 由圖2-1可知: - 系統定義了一個IBinder接口類以及DeathRecepient接口。 - Binder類和BinderProxy類分別實現了IBinder接口。其中Binder類作為服務端的Bn的代表,而BinderProxy作為客戶端的Bp的代表。 - 系統中還定義一個BinderInternal類。該類是一個僅供Binder框架使用的類。它內部有一個GcWatcher類,該類專門用于處理和Binder相關的垃圾回收。 - Java層同樣提供一個用于承載通信數據的Parcel類。 * * * * * **注意** IBinder接口類中定義了一個叫FLAG\_ONEWAY的整型,該變量的意義非常重要。當客戶端利用Binder機制發起一個跨進程的函數調用時,調用方(即客戶端)一般會阻塞,直到服務端返回結果。這種方式和普通的函數調用是一樣的。但是在調用Binder函數時,在指明了FLAG\_ONEWAY標志后,調用方只要把請求發送到Binder驅動即可返回,而不用等待服務端的結果,這就是一種所謂的非阻塞方式。在Native層中,涉及的Binder調用基本都是阻塞的,但是在Java層的framework中,使用FLAG\_ONEWAY進行Binder調用的情況非常多,以后經常會碰到。 * * * * * 思考 使用FLAG\_ONEWAY進行函數調用的程序在設計上有什么特點?這里簡單分析一下:對于使用FLAG\_ONEWAY的函數來說,客戶端僅向服務端發出了請求,但是并不能確定服務端是否處理了該請求。所以,客戶端一般會向服務端注冊一個回調(同樣是跨進程的Binder調用),一旦服務端處理了該請求,就會調用此回調來通知客戶端處理結果。當然,這種回調函數也大多采用FLAG\_ONEWAY的方式。
                  <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>

                              哎呀哎呀视频在线观看