在屏幕关闭时做一些事情,但在应用程序进入后台时关闭
Do stuff while screen is off but turn off when app goes to background
我必须允许我的应用程序在用户关闭屏幕时执行某些操作,但当用户转到主屏幕(或其他应用程序)时我必须停止服务。
我尝试处理电源按钮,但没有用。
然后我像这样创建 ScreenReceiver:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
wasScreenOn = false;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
wasScreenOn = true;
}
}
但它更改 wasScreenOn 值太晚了(在调用 onStop 方法之后)
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
if (powerButtonClicked)
return;
if (mBound) {
mMediaService.onStop();
}
}
电源按钮总是错误的...改变得太晚了
如何正确执行此操作?
好的,我找到了答案。
您需要做的就是声明 PowerManager
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
并在 onStop()
if (!powerManager.isScreenOn())
{
// Screen is off
}
我必须允许我的应用程序在用户关闭屏幕时执行某些操作,但当用户转到主屏幕(或其他应用程序)时我必须停止服务。
我尝试处理电源按钮,但没有用。 然后我像这样创建 ScreenReceiver:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
wasScreenOn = false;
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
wasScreenOn = true;
}
}
但它更改 wasScreenOn 值太晚了(在调用 onStop 方法之后)
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
if (powerButtonClicked)
return;
if (mBound) {
mMediaService.onStop();
}
}
电源按钮总是错误的...改变得太晚了
如何正确执行此操作?
好的,我找到了答案。 您需要做的就是声明 PowerManager
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
并在 onStop()
if (!powerManager.isScreenOn())
{
// Screen is off
}