画面がオフになったときにアクティビティを実行/アクティブに保つにはどうすればよいですか?
4 に答える
アクティビティをアクティブに保つには、 PARTIAL_WAKE_LOCKを使用する必要があります。android.permission.WAKE_LOCK
マニフェストでリクエストする必要があります。ただし、バッテリーの消耗が早くなるため、できるだけ早くウェイクロックを解除することを忘れないでください。
または、代わりにサービスを使用してください
アクティビティのonCreateに、次の行を入力します。
Context mContext = getApplicationContext();
PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
final PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PARTIAL_WAKE_LOCK,"motionDetection:keepAwake");
wakeLock.acquire();
//Place this where you no longer need to have the processor running
wakeLock.release();
電源ボタンを押した後も、それを閉じた場所であればアクティビティは実行されます。
あなたが私のようで、加速度計のデータを収集していた場合sensorManager.unregisterListener(this);
は、アプリのonPause部分からデフォルトを削除してください。
どのアクティビティでも、マニフェストファイルに「android:noHistory="true」'が含まれていないことを確認してください。アプリが画面から消えたり、画面が閉じたりすると、アクティビティが強制終了されます。
画面がオフになっていてもアプリをアクティブなままにしておきたい場合は、特別なことをする必要はないと思います。私のアプリケーションには追加のコードがなく、画面をオフにしてからオンにしても、アプリはそのままです。だが!Android OSは、画面がオフになっているときにしばらくするとそれを強制終了する可能性があるため、マニフェストファイルでWAKE_LOCKを使用する必要があります。または、マニフェストファイルに「android:keepScreenOn = "true"」を追加して、アプリの実行中は常に画面をオンに保つことができます。
良い方法もあります。私は数ヶ月前にこれを見つけました、そしてそれは少しバッテリー寿命を節約します;)
http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/