在我的項目中,另一個線程將在服務中啓動。爲了避免此線程在設備暫停時暫停,我在啓動此線程之前獲取了WakeLock,並在此線程完成後釋放此WakeLock。 有時,此API調用(WakeLock.acquire)花費的時間太長,超過4分鐘Samsung Galaxy SII LTE。WakeLock.acquire在三星Galaxy SII LTE上花費很長時間
下面是我的代碼: 在服務onStartCommand,收購喚醒鎖:
if (mWakeLock == null) {
final PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Eca Engine");
mWakeLock.setReferenceCounted(false);
}
if (!mWakeLock.isHeld()) {
Log.d(TAG, "Before acquire");
mWakeLock.acquire();
Log.d(TAG, "After acquire");
}
......
在線程釋放喚醒鎖:
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
}
日誌:後打印「之前 「採集後」獲得「超過4分鐘。
測試裝置信息是: 型號:SC-03D Android版本:2.3.6 基於版本:3c03domlb9 內核版本:2.6.35.11 - 3c03domlb9 980106 [email protected]#2 生成編號:gingerbread omlb9
以前有沒有人遇到過這個問題?或者對我的任何建議表示讚賞。
不幸的是,這個問題再次被轉載。我檢查過夏普設備,它不會發生。此問題僅在Samsung Galaxy SII設備上發生。 – 2012-08-08 01:11:49
在這個問題上的任何更新?我在三星S6上有相同的... – Dmitry 2015-10-05 16:27:34