如果我的应用程序正在运行并且我按下锁屏按钮,它会将应用程序置于后台。检查屏幕锁定是否调用onPause()的方法是什么?提前谢谢。
问问题
3974 次
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 权限添加到应用程序的清单文件中:
<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();
要释放唤醒锁,请调用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
}
于 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 回答