2011-12-21 35 views
0

アラームマネージャを使用してアクティビティを呼び出すと、wake locker class onRecive()を使用して電話をスリープし、アクティビティが終了した後にWakeLocker.release()を呼び出します。 ()どこでも、)onStopをWakeLockが解放されず、画面が消灯しない

public class MyScheduledReceiver extends BroadcastReceiver { 


@Override 
public void onReceive(Context context, Intent intent) { 
    WakeLocker.acquire(context); 

Activity.class

@Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     WakeLocker.release(); 
     finish(); 
     } 

私はonPause(でそれを入れている:しかし、画面はまだ

Receive.class ...オンのまま。 ..事w on't

+0

をお試しください –

+0

[http://stackoverflow.com/questions/6864712/android-alarmmanager-not-waking-phone-up?answertab=active#tab-top] – user961389

+0

ほとんど私には似ています。あなたはそのリリースを知っていますか?それはスクリーンが即座に消えないからですか?その場合は、WakeLockerクラスにPowerManager.ON_AFTER_RELEASEがあるためです。 –

答えて

1

あなたはあなたがbroadcastreceiverでwakelockを開始し、活動にそれを停止している

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

それはすでにそこにあります... – user961389

0

許可を要求していることを確認してください...解放し、私のアプリを閉じた後、画面は自動的にオフになりません。 wakelockの2つの異なるインスタンスを参照しています。あなたはonreceiveから活動を始めるべきであり、onewumeはwake lockを獲得し、それが起こることができるならonpauseで解放します。

受信機ができるだけ早く破棄されるため、放送受信機の中でしばらくの間は何かを開始してはなりません。

+0

私はwakelockを取得した直後にonReceiveから始めています... 'Intent scheduledIntent = new Intent(context、Activity.class); ' \t \t scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); \t \t context.startActivity(scheduledIntent); – user961389

+0

この行: 'WakeLocker.acquire(context);'はあなたの 'onReceive'から取り除かれ、あなたが起動したアクティビティの' onResume'に追加されます。あなたの質問にあるコードでは、 'onReceive'で一つの' WakeLock'を取得し、 'onPause'で別のものをリリースします。 – Jakar

+0

動作しません...ブロードキャストレシーバが起動するアクティビティが終了したときに、ウェイクアップしてWLを解放するには、ブロードキャストレシーバのWLを取得する必要があります。 – user961389

0

このWakeLockerクラスとは何ですか?この

PowerManager pm; 
PowerManager.WakeLock wakeLock; 

pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
        wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, 
          "x2_wakelook"); 


wakeLock.acquire(); 
wakeLock.release(); 
関連する問題