我想實現一個後臺隊列。它的工作原理是:當用戶點擊一個按鈕時,添加一個任務(這個任務需要時間完成)到隊列中,隊列應該在後臺線程上運行。如果用戶再次單擊按鈕,則在隊列中添加另一個任務。後臺線程逐個運行隊列中的任務,直到隊列爲空。我只想要1個後臺線程在任務上工作。我可以使用什麼樣的android功能?或者是否有任何例子?如何在android中實現背景隊列?
回答
退房使用AsyncTask
與SingleThreadExecuter
。
http://developer.android.com/reference/java/util/concurrent/Executors.html#newSingleThreadExecutor()
創建一個使用單個worker線程的 無界隊列操作執行器。
至少有幾種方法可以解決這個問題。您可以嘗試使用Executors等低級別的實現,但我會試一試Evernote的android-job庫。
我不會使用AsyncTasks和執行程序「低級別」調用。這正是平臺爲這些任務提供的。我沒有任何對付有用庫的東西,但AsyncTasks實現相當簡單。 –
你是對的,但是使用Executor可能對每個人都不那麼明顯,並且需要一些關於併發的知識,所以我不會說這很容易。此外,AsyncTask有一些穩定性問題,沒有錯誤處理,我會避免使用它。你提出的方法需要編寫類似的工具,我從頭開始連接上面的「重新發明輪子」。如果你想使用SDK中的東西,我建議使用Job Scheduler,但它只能在最新的Android API中使用。 –
重塑車輪?您創建一個擴展AsyncTask來執行後臺邏輯的類。調用Executors.newSingleThreadScheduledExecutor()來創建一個單線程執行程序,並在執行時將它交給每個AsyncTask。沒有太多。 –
- 1. 如何在javaBeans中實現隊列
- 2. 如何在Go中實現隊列?
- 3. 如何在java中實現隊列?
- 4. 這是背景線程隊列高性能實現嗎?
- 5. 如何優先使用循環隊列在C++中實現隊列實現?
- 6. 在c中實現隊列#
- 7. 如何在Android中實現持久隊列
- 8. 如何在現有的Javascript變量中實現CSS sprite背景?
- 9. 隊列實現
- 10. 如何在圖像中實現背景圖像在UILabel中?
- 11. 如何在Android上實現持久隊列
- 12. Android的 - 如何在背景
- 13. 如何在css中實現幾何div背景形狀
- 14. java中的隊列實現
- 15. PHP隊列實現
- 16. 隊列實現C++
- 17. C#隊列實現#
- 18. jms隊列實現
- 19. Java/Android:同步vs隊列實現
- 20. 背景音樂實現
- 21. 在Android開發中,如何實現點擊某個背景的某個區域?
- 22. 如何在沒有Javascript的HTML/CSS背景下實現多頁背景?
- 23. 如何在swift中實現動態背景圖像
- 24. 如何實現隊列混爲一談
- 25. 如何實現搜索隊列
- 26. 如何實現事件隊列?
- 27. Android背景出現綁帶
- 28. 在數據結構中實現隊列
- 29. 如何在c中的鏈表中實現一個隊列?
- 30. JMS使用Scala實現隊列實現
創建一個需要處理的工作列表,一旦用戶單擊一個元素,啓動一個AsyncTask,並跟蹤該任務以瞭解它是否已完成工作。如果用戶點擊一個新項目,將其添加到隊列中。如果異步完成,請啓動一個新的。 –
聽起來像你想要使用['Handler'](0123)http://developer.android.com/reference/android/os/Handler.html –
你可以使用intent服務來排列任務 - 它使用一個worker線。 docs - http://developer.android.com/reference/android/app/IntentService.html –