在开发者控制台 - Android vitals中,我看到了一个警告,提醒这个应用程序有“Stuck partial wake locks”。
在文档中的说明如下:
稍后在文档中,您可以阅读以下内容:
编辑:这是我的AudioService代码。
在文档中的说明如下:
确实,应用程序在后台运行(播放音频),但我使用前台服务,在应用程序持有锁时通知会显示。如果您的应用程序在后台运行(用户看不到应用程序的任何部分),并且长时间保持部分唤醒锁定,则部分唤醒锁定将变得卡住。
稍后在文档中,您可以阅读以下内容:
但这似乎不是正确的。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);
}