gpt4 book ai didi

Android vitals - 卡住唤醒锁和前台服务

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:10 30 4
gpt4 key购买 nike

在 Developer console - Android vitals 中,我看到警告说应用有“卡住的部分唤醒锁”。在 documentation它被描述为

A partial wake lock becomes stuck if it is held for a long time while your app is running in the background (no part of your app is visible to the user).

应用程序确实在后台运行(播放音频),但我使用前台服务,并且在应用程序保持锁定通知可见的整个时间。

稍后在 documentation你可以阅读

Make sure some portion of your app remains in the foreground. For example, if you need to run a service, start a foreground service instead. This visually indicates to the user that your app is still running.

但这似乎不是真的。 Android Vitals 是否忽略了该应用程序具有前台服务?有没有人有类似的经历?

编辑:这是我的 AudioService 的代码

PowerManager.WakeLock mWakeLock = null;
boolean mHasWakeLock;

void acquireLocks(){

if (!mHasWakeLock) {
final PowerManager pm = (PowerManager)
context.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,TAG);
mWakeLock.setReferenceCounted(false);
mWakeLock.acquire();
mHasWakeLock = true;
}
}

void releaseLocks() {
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
mHasWakeLock = false;
}

void play(){
startForeground(NOTIFICATION_ID, notification);
acquireLocks();
}

void stop(){
releaseLocks();
stopForeground(true);
}

最佳答案

我觉得,问题出在

mWakeLock.setReferenceCounted(false);

应该是true,这样当你释放锁时系统可以计数。在您的情况下,您很可能会发布它,但系统不会“看到”它。这可能会混淆生命体征。

尝试将该标志设置为 true。希望这会有所帮助。

关于Android vitals - 卡住唤醒锁和前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216082/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com