2011-01-08 11 views
2

ich eine Klasse gemacht haben:Android power/WakeLock Problem

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(); 
} 
} 

, dass ich in meinem Hauptklasse verwenden möchten, um den Bildschirm ein- und ausschalten zu bestimmten Stunden des Tages zu drehen, so versucht habe die folgenden (in meiner Hauptklasse):

DoNotDimScreen dm = new DoNotDimScreen(); 

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

Aber ich bekomme eine Nullpointerexzeption. Was mache ich falsch? Danke

Antwort

3

Ich denke, dass Sie auf dem Activity Lebenszyklus nachlesen müssen. Sie sollten niemals das Schlüsselwort new verwenden, um eine Activity direkt zu instanziieren, noch sollten Sie onResume oder aufrufen. Hier sind einige Links für Sie zu lesen:

0

Sie müssen Aktivität Lebenszyklus des android.You kann nicht verstehen, Lifecycle-Verfahren wie das genannt. Aber wenn Sie accreate()/release() innerhalb eines bestimmten Zeitraums möchten, können Sie den folgenden Code verwenden.

0

Ok Johan lassen Sie mich Ihnen helfen,

Führen Sie den Anwendungskontext zu Ihrer Haupttätigkeit. Dort können Sie dann die Instanz von wakelock erstellen. Erwerben Sie den Wakelock, den Sie brauchen, und umgekehrt.

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

Stellen Sie sicher, dass Sie context null nicht übergeben.

Prost ... !!