管理Android裝置的喚醒狀態

來源:互聯網
上載者:User

標籤:stat   protect   require   重複   roi   att   win   問題   blog   

當一個Android裝置閑置時,首先它的螢幕將會變暗,然後關閉螢幕,最後關閉CPU。 這樣可以防止裝置的電量被迅速消耗殆盡。但是,有時候也會存在一些特例:

Apps such as games or movie apps may need to keep the screen turned on. 例如:使用者在玩遊戲時,需要保持螢幕常亮

Other applications may not need the screen to remain on, but they may require the CPU to keep running until a critical operation finishes. 又如:某些特定應用不需要螢幕保持常亮,但是CPU持續運行直到某些邏輯執行結束

下述主題討論,如何在必要的時候保持裝置喚醒,同時又不會過多消耗電量。

主題一:保持裝置喚醒狀態

To avoid draining the battery, an Android device that is left idle quickly falls asleep. However, there are times when an application needs to wake up the screen or the CPU and keep it awake to complete some work. 為了避免電量過度消耗,Android裝置會在被閑置之後迅速進入睡眠狀態。然而有時候應用會需要喚醒螢幕或者是喚醒CPU並且保持它們的喚醒狀態,直至一些任務被完成。

需要依據具體的應用情境達到上述目的,但必須使用最輕量級的方式以免對系統資源造成影響。

如何保持螢幕常亮?

某些應用需要保持螢幕常亮,比如遊戲與視頻應用。最好的方式是在你的Activity中(且僅在Activity中,而不是在Service或其他應用組件裡)使用FLAG_KEEP_SCREEN_ON屬性。

public class MainActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);  }

該方法的優點與喚醒鎖(Wake Lock)不同,它不需要任何特殊的許可權,系統會正確地管理應用之間的切換,且不必關係釋放資源的問題。

另一個方式是在布局檔案中聲明android:keepScreenOn屬性:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:keepScreenOn="true">    ...</RelativeLayout>

使用android:keepScreenOn="true"與使用FLAG_KEEP_SCRRE_ON等效。你可以選擇最適合你的應用的方法。在Activity中通過代碼設定常亮標識的優點在於:你可以通過代碼動態清除這個標示,從而使螢幕可以關閉。

需要注意的是:除非你不再希望正在啟動並執行應用長時間點亮螢幕(例如:在一定時間無操作發生後,你想要將螢幕關閉),否則你是不需要清除FLAG_KEEP_SCRRE_ON 標識的。WindowManager會在應用進入後台或者返回前台時,正確管理螢幕的點亮或者關閉。但是如果你想要顯式地清除這一標識,從而使得螢幕能夠關閉,可以使用getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)方法。

主題二:調度重複的鬧鐘

管理Android裝置的喚醒狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.