2010-11-21 21 views
0

我希望爲我的應用程序的用戶提供使用WakeLock來保持屏幕的功能。在我的主要活動我創建了以下功能:如何在多個活動中安全地實現WakeLock

protected void processWakeLock(int pauseResume) { 
    switch (pauseResume) { 
    case STATE_RESUME: 
     if (mKeepScreenOn) { 
     wakeLock.acquire(); 
     } 
     break; 
    case STATE_PAUSE: 
     if (wakeLock.isHeld()) { 
     wakeLock.release(); 
     } 
     break; 
    } 
} 

我目前從我的和onResume覆蓋調用它,因爲我想使某些我不引起用戶的手機上的鎖,當他們不積極使用我的申請。我的應用程序有3個其他全屏視圖。什麼是確保他們的WakeLock可以繼續傳輸到我的應用程序的所有部分,同時仍然保證其手機的其他部分安全的最佳方法。

我的第一個想法是在我的每個活動中重複相同的代碼片段,雖然這看起來像很多鍋爐板。我不能使用onStartonStop,因爲當我切換到另一個全屏活動時,可見性丟失。雖然也許這會更好

根據此處的圖表和信息(http://developer.android.com/guide/topics/fundamentals.html)我沒有看到更好的方法來應用鎖。

回答

5

請勿使用WakeLock - 這對服務更重要,並且需要您持有額外的權限。

取而代之,在您的活動中使用ViewsetKeepScreenOn()。在onCreate()的基礎上調用SharedPreferenceIntent,這取決於您如何收集偏好。

+0

那麼什麼時候適合使用'WakeLock' – Thomas 2010-11-21 21:57:58

+1

@Thomas:在'服務'中。在'View'中給出'setKeepScreenOn()'的存在,在'Activity'中做這件事毫無意義。 – CommonsWare 2010-11-21 22:07:34

+0

不幸的是,'setKeepScreenOn()'不具有與'SCREEN_DIM_WAKE_LOCK'相同的行爲 – Thomas 2010-11-21 22:11:48