2010-11-21 29 views
0

Je souhaite fournir aux utilisateurs de mon application la possibilité de garder l'écran en utilisant un WakeLock. Dans mon activité principale, je l'ai créé la fonction suivante:Comment implémenter WakeLock en toute sécurité à travers plusieurs activités

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

Je le suis en train d'appeler de mes et onResume l'emporte, comme je tiens à vous assurer que je ne provoque pas de verrouillage sur le téléphone de l'utilisateur quand ils ne sont pas activement en utilisant mon application. Mon application a 3 autres vues plein écran. Quelle est la meilleure façon de s'assurer que leur WakeLock se transporte dans toutes les parties de mon application tout en restant sûr pour le reste de leur téléphone. Mon premier réflexe est de dupliquer le même fragment de code dans chacune de mes activités bien que cela ressemble à beaucoup de plaque de chaudière. Je ne peux pas utiliser onStart et onStop soit parce que la visibilité est perdue lorsque je passe à une autre activité en plein écran. Bien que peut-être il serait préférable de

Basé sur le diagramme et l'information trouvée ici (http://developer.android.com/guide/topics/fundamentals.html) Je ne vois pas une meilleure façon d'appliquer le verrou.

Répondre

5

N'utilisez pas un WakeLock - c'est plus pour les services et vous devez détenir une permission supplémentaire. En revanche, utilisez setKeepScreenOn() sur certains View pour votre activité. Appelez cela au onCreate() basé sur un SharedPreference ou Intent supplémentaire, selon la façon dont vous collectez la préférence.

+0

Alors quand serait-il approprié d'utiliser un 'WakeLock' – Thomas

+1

@Thomas: Dans un' Service'. Il n'y a aucun intérêt à le faire dans une 'Activity', étant donné l'existence de' setKeepScreenOn() 'sur' View'. – CommonsWare

+0

Il est regrettable que 'setKeepScreenOn()' n'ait pas le même comportement qu'un 'SCREEN_DIM_WAKE_LOCK' – Thomas