<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 功能強大 支持多語言、二開方便! 廣告
                1. newWakeLock分析 通過PowerManager(以后簡稱PM)的newWakeLock將創建一個WakeLock,代碼如下: ~~~ public WakeLock newWakeLock(int flags, String tag) { //tag不能為null,否則拋異常 return new WakeLock(flags, tag);//WakeLock為PM的內部類,第一個參數flags很關鍵 } ~~~ WakeLock的第一個參數flags很關鍵,它用于控制CPU/Screen/Keyboard的休眠狀態。flags的可選值如表5-3所示。 :-: ![](https://box.kancloud.cn/e8422228b250e85dcf3079aa024e2cb4_755x281.png =755x281) 表5-3 WakeLock 的flags參數說明 由表5-3可知: - WakeLock只控制CPU、屏幕和鍵盤三大部分。 - 表中最后兩項是附加標志,和前面的其他WAKE_LOCK標志組合使用。注意, PARTIAL_WAKE_LOCK比較特殊,附加標志不能影響它。 - PARTIAL_WAKE_LOCK不受電源鍵控制,即按電源鍵不能使PARTIAL_WAKE_LOCK系統進入休眠狀態(屏幕可以關閉,但CPU不會休眠)。 了解了上述知識后,再來看如下代碼: **PowerManager.java::WakeLock** ~~~ WakeLock(int flags, String tag) { //檢查flags參數是否非法 mFlags =flags; mTag =tag; //創建一個Binder對象,除了做Token外,PMS需要監視客戶端的生死狀況,否則有可能導致 //WakeLock不能被釋放 mToken= new Binder(); } ~~~ 客戶端創建WakeLock后,需要調用acquire以確保電力資源供應正常。下面對acquire代碼進行分析。 2. acquire分析 **PowerManager.java::WakeLock.acquire函數** ~~~ public void acquire() { synchronized (mToken) { acquireLocked();//調用acquireLocked函數 } } //acquireLoced函數 private void acquireLocked() { if(!mRefCounted || mCount++ == 0) { mHandler.removeCallbacks(mReleaser);//引用計數控制 try { //調用PMS的acquirewakeLock,注意這里傳遞的參數,其中mWorkSource為空 mService.acquireWakeLock(mFlags, mToken, mTag, mWorkSource); }...... mHeld =true; } } ~~~ 上邊代碼中調用PMS的acquireWakeLock函數與PMS交互,該函數最后一個參數為WorkSource類。這個類從Android 2.2開始就存在,但一直沒有明確的作用,下面是關于它的一段說明。 ~~~ /** 見WorkSoure.java * Describesthe source of some work that may be done by someone else. * Currentlythe public representation of what a work source is is not * defined;this is an opaque container. */ ~~~ 由以上注釋可知,WorkSource本意用來描述某些任務的Source。傳遞此Source給其他人,這些人就可以執行該Source對應的工作。目前使用WorkSource的地方僅是ContentService中的SynManager。讀者暫時可不理會WorkSource。 客戶端的功能比較簡單,和PMS僅通過acquireWakeLock函數交互。下面來分析服務端的工作。
                  <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>

                              哎呀哎呀视频在线观看