2011-01-08 14 views
2

私はクラス作っています(アンドロイドpowermanager/wakelock問題

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

私はその日の特定の時間でオンとオフ画面をオンにする私のメインクラスで使用したいので、次のことを試してみましたveは私のメインクラスで):

DoNotDimScreen dm = new DoNotDimScreen(); 

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

しかし、私はnullpointerexceptionを取得します。何が間違っているのですか?ありがとう

答えて

3

私はあなたがActivityライフサイクルを読む必要があると思います。直接Activityをインスタンス化するためにnewキーワードを使用しないでください。また、onResumeまたはに電話する必要はありません。ここであなたが読むためにのためにいくつかのリンクです:あなたがそのようなライフサイクルメソッドと呼ばれることができないandroid.Youの活動のライフサイクルを理解する必要が

0

。 しかし、特定の期間内にacquire()/ release()が必要な場合は、次のコードを使用して行うことができます。 [OK]をヨハンは私があなたを助けてみましょう

0

は、あなたのメインの活動にアプリケーションコンテキストを渡します。ここでwakelockのインスタンスを作成できます。あなたが必要とするwakelock wnereverを取得し、その逆も同様です。

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

コンテキストヌルを渡さないようにしてください。

乾杯... !!

関連する問題