【问题标题】:Android Keep Screen On In AppAndroid 在应用程序中保持屏幕开启
【发布时间】:2026-02-05 03:50:01
【问题描述】:

我有一个运行前台服务的 android 应用程序,当该服务运行时,我想为用户提供保持屏幕打开的选项。

我在我的设置首选项中添加了一个复选框首选项,如果为真,我希望保持屏幕打开但默认设置为关闭。这只是我的用户所要求的。目前我有偏好,但是当我运行该服务时,我的屏幕仍然关闭,这就是我所做的

全局变量

private static final String PREFS_DEVICE = "DeviceInfo";

代码和 if 语句

SharedPreferences settings = getSharedPreferences(PREFS_DEVICE, 0);
            if(settings.getBoolean("screenPref", false)) {
                final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
                this.mWakeLock.acquire();
            }

然后我将其添加到我的清单中

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

是不是我做错了什么。是否有与服务不同的方法来执行此操作,或者只是无法通过服务来执行此操作(希望不是这种情况)。

【问题讨论】:

  • 应用程序正在运行,但屏幕关闭,你的意思是什么?
  • 我从前台服务运行的进程,所以它从状态栏运行,但这是一个漫长的过程,所以屏幕经常关闭,当屏幕关闭时,人们有个人资料要穿内衣,所以当服务已开启 我想提供让屏幕保持开启的选项,这样服务不会因屏幕关闭而减慢

标签: android screen preferences backlight


【解决方案1】:

您可以使用标志 FLAG_KEEP_SCREEN_ON

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

当你不想继续时

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

【讨论】:

    【解决方案2】:

    试试这个:

    mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,         
                                "");    
    mWakeLock.acquire();
    

    【讨论】:

    • 释放唤醒锁的位置。您的代码看起来没问题。我已经在我的一个应用程序中以相同的方式实现了这一点。可能是您使用的问题。您可能不会以正确的方式使用它。在你想使用它的地方提供完整的代码细节。
    • 取出我的 if 语句,然后把这段代码放进去,它工作得很好,谢谢 :) 现在修复 if 语句,什么不是
    【解决方案3】:

    这种方式要好得多,因为使用更少的权限、服务和电池

    public void setWakelock(Activity Target, boolean State)
    {
        if (State) Target.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        else Target.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    
        return;
    }
    

    已编辑

    【讨论】:

    • 在答案中添加一些文字描述会很有帮助,这样新用户可以更好地理解为什么您的解决方案就是答案,而不仅仅是复制和粘贴。
    【解决方案4】:

    遵循马克墨菲提供的WakefulIntentService 模式。你可以在他的book找到解释 很不错的一个

    【讨论】:

    • 但是没有服务窗口?
    最近更新 更多