アプリが実行されているときにロック画面ボタンを押すと、アプリがバックグラウンドになります。画面ロックによってonPause()が呼び出されているかどうかを確認する方法は何ですか? よろしくお願いします。
3 に答える
画面がオンになっているかどうかを確認するだけです。
@Override
protected void onPause() {
super.onPause();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean screenOn;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
screenOn = pm.isInteractive();
} else {
screenOn = pm.isScreenOn();
}
if (screenOn) {
// Screen is still on, so do your thing here
}
}

この方法を使えば簡単に知ることができます
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
System.out.println("On Pause called");
}
ロック画面中にデバイスを起動状態に保つため。ドキュメンテーション。
あなたの場合、あなたが必要とするでしょうWake_Lock
wake lock を使用するための最初のステップは、アプリケーションのマニフェスト ファイルに WAKE_LOCK 権限を追加することです。
<uses-permission android:name="android.permission.WAKE_LOCK" />サービスを使用して何らかの作業を行うブロードキャスト レシーバーがアプリに含まれている場合は、 WakefulBroadcastReceiver の使用で説明されているように、 WakefulBroadcastReceiverを介してウェイク ロックを管理できます。これは推奨されるアプローチです。アプリがそのパターンに従わない場合は、ウェイクロックを直接設定する方法を次に示します。
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); Wakelock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag"); wakeLock.acquire();wake lock を解放するには、wakelock.release() を呼び出します。これにより、CPU に対する要求が解放されます。バッテリーの消耗を避けるために、アプリの使用が終了したらすぐに wake lock を解放することが重要です。
これは、powermanager を設定した後に行ってください。
boolean screenOn;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
screenOn = powerManager.isInteractive();
} else {
screenOn = powerManager.isScreenOn();
}
if (screenOn) {
// Screen is still on, so do your thing here
}
onPause が呼び出されたときに知りたいだけですか? スーパー関数をオーバーライドして、関数にログを追加できます。
@Override
public void onPause() {
super.onPause();
System.out.println("On Pause called");
}