在开发者控制台 - Android维权中我发现警告说应用程序有“卡住部分唤醒锁”。 在documentation它描述为Android维权 - Stuck Wake Locks和前台服务
如果保持较长时间,而您的应用程序在后台运行的部分唤醒锁器卡(无你的应用程序的一部分,是对用户可见)。
的确,应用程序在后台运行(播放音频),但我使用前台服务和应用程序保持锁定通知的整个时间是可见的。
在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);
}
请为wakelock and foreground服务添加相关代码 –
同样的问题。应用程序需要部分唤醒锁,用户也需要它。但谷歌认为,否则...如果你找到一个解决方案请分享它(我不使用setReferenceCounted)谢谢! – Trancer