在開發者控制檯 - 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