屏幕關閉時,我的應用程序服務被暫停。我使用以下代碼啟動服務:if (mSharedPrefs.getBoolean("prefAutoUpdatesMain", false)) { Intent svc = new Intent(this, MyService.class); startService(svc);}如何避免服務暫停?我在MyService中要做的就是從Internet下載一些數據。如果我了解該過程,則必須遵循以下步驟:獲取喚醒鎖下載資料釋放喚醒鎖在下載數據方法時,沒有對akeLock的引用,而是具有wakeLock的應用程序,對嗎?默認情況下,喚醒鎖是引用計數。我認為不帶引用計數的喚醒鎖更好,以確保將其釋放,我錯了嗎?
1 回答
眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
您需要部分WakeLock。即使關閉屏幕,它也將保持CPU打開。
獲得:
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
釋放:
wakeLock.release();
WakeLock還支持引用計數,因此您的服務中可能有許多需要喚醒功能的事物,并且當它們都不處于活動狀態時,設備可以進入睡眠狀態。
注意事項:
如果您使用引用計數,請確保通過您的應用程序的所有控制路徑都將正確獲取/釋放...最終,此處的塊將派上用場。
另外,請確保不經常短時間握住WakeLocks。它們在電池使用方面相加。獲取鎖,開展業務,并盡快釋放。
- 1 回答
- 0 關注
- 811 瀏覽
添加回答
舉報
0/150
提交
取消
