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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                create函數的代碼如下所示。 **NetworkManagementService.java::create** ~~~ public static NetworkManagementService create(Context context)throws InterruptedException { // 創建一個NMService對象 final NetworkManagementService service = new NetworkManagementService(context); final CountDownLatch connectedSignal = service.mConnectedSignal; service.mThread.start();// 啟動NMService中的一個線程 // connectedSignal用于等待某個事情的發生。此處是等待mThread完成初始化工作 connectedSignal.await(); return service; } ~~~ create函數非常簡潔,其主要工作就是創建一個NMService對象并啟動其中一個線程。create返回前需要確保mThread線程完成初始化工作。下面來看看NMService的構造函數。 **NetworkManagementService.java** ~~~ private NetworkManagementService(Context context) { mContext = context; // 對模擬器的處理 if ("simulator".equals(SystemProperties.get("ro.product.device"))) return; /* NativeDaemonConnector是Java Framework中一個特別的類,它用于連接指定的socket,并發送和接收 socket數據。 此處,"netd"參數代表目標socket。NetdCallbackReceiver為具體的socket連接及消息處理對象。 1.當Netd連接成功后,NetdCallbackReceiver的onDaemonConnected函數將被調用。 2.當收到來自Netd的數據后,NetdCallbackReceiver的onEvent函數將被調用。 NativeDaemonConnector代碼比較簡單,感興趣的讀者不妨自行閱讀。 */ mConnector = new NativeDaemonConnector( new NetdCallbackReceiver(), "netd", 10, NETD_TAG, 160); // 創建一個線程,其Runnable對象就是mConnector mThread = new Thread(mConnector, NETD_TAG); /* 把自己添加到Watchdog中的監控隊列中。這樣,NMService將受到Watchdog的監控,一旦NMService 出現異常,Watchdog將自殺以重啟Android Java World。對Watchdog感興趣的讀者不妨閱讀《深 入理解Android:卷Ⅰ》4.5.3節“Watchdog分析”。 */ Watchdog.getInstance().addMonitor(this); } ~~~ 對上述代碼來說,最重要的是NetdCallbackReceiver,下面來看看。 **NetworkManagementService.java::NetdCallbackReceiver** ~~~ private class NetdCallbackReceiver implements INativeDaemonConnectorCallbacks { public void onDaemonConnected() { if (mConnectedSignal != null) { // 通知NMService構造函數中的connectedSignal.await()返回 mConnectedSignal.countDown(); mConnectedSignal = null; } else {// mMainHandler和mThread線程綁定 mMainHandler.post(new Runnable() { public void run() { prepareNativeDaemon(); // 下節介紹 } }); } } // 處理來自Netd的消息 public boolean onEvent(int code, String raw, String[] cooked) { switch (code) {// 目前NMService只處理下面三種Command對應的消息 case NetdResponseCode.InterfaceChange: // 對應InterfaceCmd ......// 略去具體的處理邏輯 case NetdResponseCode.BandwidthControl:// 對應BandwidthControlCmd ...... case NetdResponseCode.InterfaceClassActivity:// 和IdletimerCmd有關 ...... default: break; } return false; } } ~~~ create及相關函數都比較簡單,此處不詳述,下面來看systemReady。
                  <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>

                              哎呀哎呀视频在线观看