【发布时间】:2018-02-23 06:13:46
【问题描述】:
在开发者控制台 - Android Vitals 中,我看到应用有“卡住部分唤醒锁定”的警告。 在documentation 中,它被描述为
如果在您的应用在后台运行时长时间保持部分唤醒锁(用户看不到应用的任何部分),部分唤醒锁就会卡住。
应用程序确实在后台运行(播放音频),但我使用前台服务,并且应用程序保持锁定通知的整个时间都是可见的。
稍后在documentation你可以阅读
确保您的应用的某些部分保持在前台。例如,如果您需要运行服务,请改为启动前台服务。这可以直观地向用户表明您的应用仍在运行。
但这似乎不是真的。 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);
}
【问题讨论】:
-
请添加唤醒锁和前台服务的相关代码
-
同样的问题。应用程序需要部分唤醒锁定,用户也需要它。但 Google 不这么认为……如果您找到解决方案,请分享(我不使用 setReferenceCounted)谢谢!
-
这个问题你解决了吗?我有一个类似的。
标签: android google-play-console