Problema de powermanager / wakelock de Android

He hecho una clase:

package com.test;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;

public class DoNotDimScreen extends Activity {

private PowerManager.WakeLock wl;

@Override
protected void onCreate(Bundle savedInstanceState) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
}

@Override
protected void onPause() {
super.onPause();
wl.release();
}

@Override
protected void onResume() {
super.onResume();
wl.acquire();
}
}

Que quiero usar en mi clase principal para encender y apagar la pantalla a ciertas horas del día, así que probé lo siguiente (en mi clase principal):

DoNotDimScreen dm = new DoNotDimScreen();

 if (hourOfDay == 5) 
  dm.onResume();
    else
     dm.onPause();

Pero obtengo una excepción de punto nulo. ¿Qué estoy haciendo mal? Gracias

preguntado el 08 de enero de 11 a las 15:01

3 Respuestas

Creo que necesitas leer sobre el Activity ciclo vital. Nunca deberías usar el new palabra clave para crear una instancia Activity directamente, ni debes llamar onResume or onPause. Aquí hay algunos enlaces para que los lea:

Respondido el 08 de enero de 11 a las 19:01

Ok Johan déjame ayudarte

Pase el contexto de la aplicación a su actividad principal. Allí puede crear la instancia de wakelock luego. Adquiera el wakelock wnerever que necesite y viceversa.

      if (hourOfDay == 5)    
        Wl.acquire();     
     else      
        wl.release(); 

Asegúrese de no pasar el contexto nulo.

Salud...!!

Respondido el 01 de junio de 12 a las 12:06

Tienes que entender el ciclo de vida de la actividad de Android. No puedes llamar al método del ciclo de vida de esa manera. Pero si desea adquirir () / release () dentro de un período de tiempo específico, puede hacerlo usando el siguiente código.

Respondido el 27 de Septiembre de 11 a las 13:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.