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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                前文曾分析過ServiceManager的作用,一個Client想要得到某個Service的信息,就必須先和ServiceManager打交道,通過調用getService函數來獲取對應Service的信息。請看來源于IMediaDeathNotifier.cpp中的例子getMediaPlayerService(),它的代碼如下所示: **IMediaDeathNotifier.cpp** ~~~ /* 這個函數通過與ServiceManager通信,獲得一個能夠與MediaPlayerService通信的BpBinder, 然后再通過障眼法interface_cast,轉換成一個BpMediaPlayerService。 */ IMediaDeathNotifier::getMediaPlayerService() { sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder; do { //向ServiceManager查詢對應服務的信息,返回BpBinder。 binder = sm->getService(String16("media.player")); if(binder != 0) { break; } //如果ServiceManager上還沒有注冊對應的服務,則需要等待,直到對應服務注冊 //到ServiceManager中為止。 usleep(500000); }while(true); /* 通過interface_cast,將這個binder轉化成BpMediaPlayerService, binder中的handle標識的一定是目的端MediaPlayerService。 */ sMediaPlayerService = interface_cast<IMediaPlayerService>(binder); } returnsMediaPlayerService; } ~~~ 有了BpMediaPlayerService,就能夠使用任何IMediaPlayerService提供的業務邏輯函數了。例如createMediaRecorder和createMetadataRetriever等。 顯而易見的是,調用的這些函數都將把請求數據打包發送給Binder驅動,由BpBinder中的handle值找到對應端的處理者來處理。這中間經歷過如下的過程: (1)通訊層接收到請求。 (2)遞交給業務層處理。 想了解這中間的過程嗎?下面就對此做詳細分析。
                  <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>

                              哎呀哎呀视频在线观看