令人驚訝的是,互聯網上沒有人需要創建低優先級的Android服務,但我確實需要。該服務可能偶爾需要做一些密集的CPU或數據庫工作,所以我希望它具有儘可能低的優先級。如果它有什麼區別,我需要該服務從數據庫中一次讀取條目(可能有幾千條),然後遍歷列表並添加和減去一些值。這是非常重要的,這會創造儘可能最低的CPU負載,我不在乎它是在1秒或10秒內完成的。創建低優先級的Android服務
Android開發文檔提供一個例子是這樣的:
@Override
public void onCreate() {
// Start up the thread running the service. Note that we create a
// separate thread because the service normally runs in the process's
// main thread, which we don't want to block. We also make it
// background priority so CPU-intensive work will not disrupt our UI.
HandlerThread thread = new HandlerThread("ServiceStartArguments",
Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
// Get the HandlerThread's Looper and use it for our Handler
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}
完整的示例(http://developer.android.com/guide/components/services.html)涉及一個服務處理器和一個打環器,其未在此實施例中說明。這些都是必要的,使服務低優先級或是這只是開發文檔複雜的事情,還有另一種方法來確保服務是低優先級?
但是我應該在哪裏做這項工作? http://developer.android.com/guide/components/services.html#ExtendingService中的示例有一個handleMessage()方法,但是有哪些消息?該服務沒有收到任何東西,它已經啓動,它已經知道該怎麼做。在那個例子中,我應該把所有讀取和添加數據庫中的東西的代碼放在哪裏? – TimSim
替換handleMessage中它正在與您想要做的工作睡覺的部分。任何時候一個活動調用啓動服務,處理程序將被觸發。特別是這行'mServiceHandler.sendMessage(msg);'正在發送一條消息給處理程序處理。 –
太棒了,這很合理,謝謝。 – TimSim