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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                匿名Service就是沒有注冊的Service,這句話是什么意思? - 沒有注冊意味著這個Service沒有在ServiceManager上注冊。 - 它是一個Service又表示它確實是一個基于Binder通訊的C/S結構。 再看下面的代碼,或許就會明白是什么意思了。 **IMediaPlayerService.cpp** ~~~ status_t BnMediaPlayerService::onTransact(uint32_tcode, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { caseCREATE_URL: { CHECK_INTERFACE(IMediaPlayerService, data, reply); ... //player是一個IMediaPlayer類型的對象 sp<IMediaPlayer> player =create( pid, client, url, numHeaders > 0 ? &headers : NULL); //下面這句話也很重要 reply->writeStrongBinder(player->asBinder()); return NO_ERROR; }break; ~~~ 當MediaPlayerClient調用create函數時,MediaPlayerService會返回一個IMediaPlayer對象,此后,MediaPlayerClient即可直接使用這個IMediaPlayer來進行跨進程的函數調用了。 請看,這里確實也存在C/S的兩端: - BpMediaPlayer,由MediaPlayerClient使用,它用來調用IMediaPlayer提供的業務服務 - BnMediaPlayer,由MediaPlayerService使用,用來處理來自Client端的業務請求。 上面明顯是一個C/S結構,但在ServiceManager中,肯定沒有IMediaPlayer的信息,那么BpMediaPlayer是如何得到BnMediaPlayer的handle值的呢? >[warning] **注意**:handle事關通信的目的端,因此它非常重要。 答案可能就在下面這句話中: ~~~ reply->writeStrongBinder(player->asBinder());//將Binder類型作為一種特殊數據類型處理 ~~~ 當這個reply寫到Binder驅動中時,驅動可能會特殊處理這種IBinder類型的數據,例如為這個BBinder建立一個獨一無二的handle,這其實相當于在Binder驅動中注冊了一項服務。 通過這種方式,MS輸出了大量的Service,例如IMediaPlayer和IMediaRecorder等。 >[info] **說明**:關于這個問題,也可以查看驅動的實現來驗證這一想法。
                  <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>

                              哎呀哎呀视频在线观看