我有一個在後臺線程上執行一些繁重工作的服務。它基本上下載一個大的zip(> 5MB),存儲它,解壓縮,解析XML並將信息存儲在SQLite數據庫中。暫停在後臺線程上運行的任務以運行更高優先級的任務
雖然服務正在完成其工作,但我有時必須運行一個快速後臺任務(例如登錄用戶)。但是,由於服務非常繁忙(通常會提取zip文件),我的短任務需要一段時間才能運行(並且用戶必須等待)。
有沒有一種方法可以完全暫停我的服務(和它的背景AsyncTask),所以我可以運行我的新的高優先級任務?
謝謝!
我有一個在後臺線程上執行一些繁重工作的服務。它基本上下載一個大的zip(> 5MB),存儲它,解壓縮,解析XML並將信息存儲在SQLite數據庫中。暫停在後臺線程上運行的任務以運行更高優先級的任務
雖然服務正在完成其工作,但我有時必須運行一個快速後臺任務(例如登錄用戶)。但是,由於服務非常繁忙(通常會提取zip文件),我的短任務需要一段時間才能運行(並且用戶必須等待)。
有沒有一種方法可以完全暫停我的服務(和它的背景AsyncTask),所以我可以運行我的新的高優先級任務?
謝謝!
根據此:
stackoverflow.com/questions/18480206/asynctask-vs-thread-in-android
whay不要嘗試簡單的java線程,而不是使用的AsyncTask的。你也可以嘗試給予它更大的優先權,但在我看來,優先事項並不那麼有效。
直接在Android中使用Java線程不是一種好的做法,因爲開發人員應該手動處理回調,以及後臺應該做什麼,這會導致大量的鍋爐板代碼。另一方面,使用Asynctasks也創建後臺線程沒有所有的大驚小怪,並重寫它的方法onPrexecute doInBackground onPostExecute等...幫助你有一個更乾淨的代碼,並有效地管理回調。 – Mood 2015-04-27 19:07:49
你在服務中使用簡單線程還是AsyncTask?請注意,在大多數Android操作系統版本中_all_ AsyncTasks在同一個線程上運行,因此如果您在服務中使用AsyncTask進行長時間操作,它將阻止所有未來的AsyncTasks。這可能是也可能不是你問題的根源(更多細節是必需的)。 如果不是,另一個建議是降低服務的線程數,副作用是它甚至可以提高UI響應度。 – Kai 2014-09-05 03:19:44
失敗。應用程序設計用於在用戶登錄之前下載數據。 – danny117 2014-09-05 05:27:17
@Kai Wow,我不知道。我想每一個新的AsyncTask都會產生一個新的線程。那麼我怎麼能降低我的服務線程? – 2014-09-05 13:44:27