1

アプリが実行されているときにロック画面ボタンを押すと、アプリがバックグラウンドになります。画面ロックによってonPause()が呼び出されているかどうかを確認する方法は何ですか? よろしくお願いします。

4

3 に答える 3

9

画面がオンになっているかどうかを確認するだけです。

@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
    }
}
于 2014-09-06T00:20:51.823 に答える
1

一時停止サイクル

この方法を使えば簡単に知ることができます

@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
}
于 2014-09-05T18:09:26.873 に答える
0

onPause が呼び出されたときに知りたいだけですか? スーパー関数をオーバーライドして、関数にログを追加できます。

@Override
public void onPause() {
  super.onPause();
  System.out.println("On Pause called");
}
于 2014-09-05T18:01:47.230 に答える