2010-06-18 80 views
5

在Android中,如果我想要做一些後臺工作,之間有什麼Android的 - 在後臺運行 - 服務與標準的Java類

創建服務做的工作,並且具有活動啓動之差服務 VS. 創建一個標準的Java類來完成工作,並讓Activity創建一個類的對象並調用方法,以在單獨的線程中完成工作。

+0

請參閱http://stackoverflow.com/questions/2633334/application-threads-vs-service-threads – 2012-08-05 13:04:13

回答

5

做你自己的線程是矯枉過正的,有解決方案,所以你不必擔心併發的困難部分。看看AsyncTaskIntentService。如果您需要服務,請記住,您的服務可能隨時被殺死。

+0

在大多數情況下,AsyncTask對於您想在另一個線程上運行的所有任務都足夠了。 – Janusz 2010-06-18 10:42:55

3

那麼,Android提供了一些用於輕鬆製作工作線程的有用方法。請看Looper類定義。它允許你通過Handler發送事件在另一個線程中一個接一個地執行或者在不同線程之間傳輸消息。

服務是沒有什麼奇特的。創建服務只是告訴操作系統,即使您的活動不可見,您仍需要做一些工作。

2

根據您正在構建的應用程序,它可能不是一個選項。

幾乎每個網絡應用程序都會在某個服務上具有其某些功能,以允許用戶在正在下載內容時更改活動活動。

在RSS閱讀器中,例如,您可以單擊「全部更新」,並根據當前的數據連接情況,可能需要比您想要的更長的時間。因此,如果您希望用戶在下載文件時能夠返回主屏幕並執行其他操作,則必須使用服務。

服務允許您在用戶不在活動上時在後臺運行任務。這並不意味着它會一直運行。檢查Service lifecycle

BTW IntentService 服務。