我想了解後臺線程是如何工作的。我從我的活動中調用後臺線程,並在此活動中實現我的線程處理程序。比方說,當我的後臺線程正在運行時,用戶轉到活動b。當我的後臺線程完成其操作時會發生什麼,我將不得不在應用程序中的每一個單獨的活動中實現處理程序,還是會自動調用來自活動a的處理程序,並引導用戶進行活動?Android中的處理程序和線程
1
A
回答
1
Handler
的javadoc說:
Each Handler instance is associated with a single thread and that thread's
message queue.
由於創建的所有活動和他們的方法調用在主應用程序線程(也稱爲EDT),這是你創建你的處理器,那麼當你調用你的處理器(通過post()或類似的方法)從後臺線程執行,它將在EDT中執行。
what happens when my background thread finishes its operation will i have to
implement handlers in every single activity in the app or will the handler from
activity a will be automatically invoked and will direct the user to activity a?
- 當後臺線程調用運行的比的
run()
方法handler.post(可運行)將在線程您創建處理器(=主應用程序線程)執行。 - 不,它不會將用戶引導至活動A或使其可見。它將執行您在活動A中定義的
runnable.run()
方法。
1
一般而言,您通常希望使用AsyncTask進行線程化,因爲它允許您使用onPreExecute()
和onPostExecute()
中的UI線程。
當關聯的活動未處於活動狀態時,您不應該做太多事情。理想情況下,你會停止onPause()
的線程。
對於需要有自己的生活除了一個活動的任務,建議Services。從該文檔:
A服務是表示任一應用程序的 同時不 交互的用戶來執行運行較長 操作或用於其他應用程序使用提供的功能 慾望的應用組件 。
然後,您可以讓多個活動與執行長時間運行的相同服務進行交互。
相關問題
- 1. Android線程和處理程序NullPointerException
- 2. Touchevent中的android線程/處理程序
- 3. 活動的Android處理程序/線程
- 4. 在android中編程線程和處理程序?
- 5. Android線程處理程序問題
- 6. Android Studio線程處理程序
- 7. 在Android中處理線程
- 8. Android:在服務操作中插入處理程序和線程
- 9. 如何在Android中停止線程和處理程序
- 10. Android的可運行和處理程序上的主UI線程
- 11. 線程和處理程序handleMessage()性能
- 12. 處理程序和線程UI更新
- 13. C#,事件處理程序和線程
- 14. Loopers - 處理程序 - 線程
- 15. Android的線程和處理程序,沒有發現錯誤
- 16. 不帶線程和處理程序的android ProgressBar值
- 17. 帶處理程序和線程的Android服務
- 18. 線程中的信號處理程序
- 19. NServiceBus處理程序中的多線程
- 20. 線程運行中的處理程序
- 21. Android中的處理程序
- 22. Android中的處理程序
- 23. 單獨的線程中的Android Sqlite處理程序?
- 24. android線程和處理程序最佳實踐
- 25. Android UI線程和消息處理程序混淆
- 26. Android處理程序和線程在開始時沒有運行?
- 27. Android線程和處理程序不工作
- 28. Android:麻煩使用線程和處理程序
- 29. Android處理程序,定時器和多線程
- 30. 與線程,處理程序和信息處理:「重新啓動」線程
感謝您的回覆。我目前使用異步任務從Web服務下載數據並插入到數據庫。我正在看使用後臺線程的原因是因爲我希望用戶能夠使用我的應用與數據從數據庫,而我正在下載新的或更新的信息。 – user648929 2011-03-08 00:12:27
@ user648929這聽起來像是你想讓一個服務在後臺工作中做的,所以你不必擔心Activity的生命週期與下載有關。 – 2011-03-08 00:44:15