2010-05-05 9 views
9

he encontrado dos maneras de mantener la pantalla en:Manteniendo la pantalla encendida, ¿de qué forma?

El primero es más simple:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

segundo se utiliza una wakelock y que requieren un permiso adicional:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 

¿Hay ¿Alguna diferencia real entre estos dos métodos, aparte de la segunda, es más complicada de implementar y requiere un permiso adicional? ¿El resultado final será siempre el mismo?

+0

* * Si se necesita un permiso y el otro no lo hace, no es ** ** ciertamente una diferencia (o un error en la API). Qué diferencia, sin embargo, no sé. –

+0

Probablemente el permiso esté allí porque puede hacer cosas más poderosas con eso, no solo mantener la pantalla encendida. Solo me preguntaba más sobre el resultado final, si ambas formas siempre mantendrán la pantalla activa sin importar qué. –

Respuesta

22

Debería ver Coding for (Battery) Life presentación de Google IO, corredera 16

Si no quiere, entonces: Usted podría hacer el primero en el XML para cualquier elemento de diseño y es el sugirió que se debe usar (no sé si aplicarlo a la ventana, podría ser tan malo como el wakelock, no sé).

XML:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:keepScreenOn="true"> 

Ventana Bandera:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
+0

Gracias, no sabía acerca de la forma xml. Creo que es casi equivalente al de la ventana. Sin embargo, en la presentación dice que los wakelocks son costosos si se olvidan. Entonces, si se hace bien, deberían estar bien. Parece que el resultado final sería el mismo. Elegiré el camino recomendado entonces. –

+1

@JanS. Deberías ver el video: http://www.youtube.com/watch?feature=player_detailpage&v=OUemfrKe65c#t=1793 (el 29:53). Usar un wakelock y su permiso en caso de que solo tengas una aplicación basada en UI no es necesaria y es muy problemático en caso de que tengas errores o fallas. si usa esta bandera, evita usar un wakelock y mantiene la pantalla encendida mientras el usuario permanezca en el diseño actual. –

Cuestiones relacionadas