检查是否因屏幕锁定而调用onPause活动状态

时间:2014-09-05 17:58:00

标签: android onpause screen-lock

如果我的应用程序正在运行,我按下锁定屏幕按钮,它会将应用程序置于后台。检查是否通过屏幕锁定调用 onPause()的方法是什么?。提前谢谢

3 个答案:

答案 0 :(得分:8)

您只需检查屏幕是否亮起。

@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
    }
}

答案 1 :(得分:1)

On Pause Cycle

您可以使用此方法简单地了解它

@Override
public void onPause() {
super.onPause();  // Always call the superclass method first
System.out.println("On Pause called");
}

用于在锁定屏幕时保持设备唤醒。 Documentation.

好的,你需要Wake_Lock

  

要使用唤醒锁,第一步是将WAKE_LOCK权限添加到应用程序的清单文件中:

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

如果您的应用包含使用服务进行某项工作的广播接收器,您可以通过WakefulBroadcastReceiver管理唤醒锁,如Using a WakefulBroadcastReceiver.中所述。这是首选方法。如果您的应用不遵循该模式,则以下是直接设置唤醒锁的方法:

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
Wakelock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
    "MyWakelockTag");
wakeLock.acquire();
     

要释放唤醒锁定,请致电wakelock.release().这将释放您对CPU的声明。一旦您的应用程序完成使用它以避免耗尽电池,请务必释放唤醒锁定。

设置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
}

答案 2 :(得分:0)

您只想知道何时调用onPause?您可以覆盖超级函数并将记录添加到函数中:

@Override
public void onPause() {
  super.onPause();
  System.out.println("On Pause called");
}