<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 功能強大 支持多語言、二開方便! 廣告
                相信讀者此時已經對WakeLock機制有了比較清晰的認識,此處以flags標簽為出發點,對WakeLock的知識點進行總結。 - 如果flags和屏幕有關(即除PARTIAL_WAKE_LOCK外),則需要更新屏幕、燈光狀態。其中,屏幕操作通過Power類完來成,燈光操作則通過LightService類來完成。 - 如果FLAGS是PARTIAL_WAKE_LOCK,則需要通過Power提供的接口獲取Kernel層的WakeLock。 - 在WakeLock工作流程中還混雜了用戶體驗、光傳感器、接近傳感器方面的處理邏輯。這部分代碼集中體現在setPowerState函數中。感興趣的讀者可進行深入研究。 - WakeLock還要通知BatteryStatsService,以幫助其統計電量使用情況。這方面內容放到本章最后再做分析。 另外,PMS在JNI層也保存了當前屏幕狀態信息,這是通過updateNativePowerStateLocked完成的,其代碼如下: ~~~ private void updateNativePowerStateLocked() { nativeSetPowerState(//調用native函數,傳入兩個參數 (mPowerState & SCREEN_ON_BIT) != 0, (mPowerState & SCREEN_BRIGHT) == SCREEN_BRIGHT); } //jni層實現代碼如下 static void android_server_PowerManagerService_nativeSetPowerState( JNIEnv* env,jobject serviceObj, jboolean screenOn, jbooleanscreenBright) { AutoMutex _l(gPowerManagerLock); gScreenOn = screenOn;//屏幕是否開啟 gScreenBright = screenBright; //屏幕光是否全亮 } ~~~ PMS的updateNativePowerStateLocked函數曾一度讓筆者感到非常困惑,主要原因是初看此函數名,感覺它極可能會和Kernel層的電源管理系統交互。等深入JNI層代碼后發現,其功能僅是保存兩個全局變量,和Kernel壓根兒沒有關系。其實,和Kernel層電源管理系統交互的主要是Power類。此處的兩個變量是為了方便Native層代碼查詢當前屏幕狀態而設置的,以后分析Andorid輸入系統時就會搞清楚它們的作用了。
                  <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>

                              哎呀哎呀视频在线观看