2013-01-11 132 views
2

我有一個應用程序,我有一個UART(串行通信)服務和其他幾個「任務」,需要單獨的工作線程,以保持UI響應。我的問題是理解何時/何地應該創建這些線程以及何時終止。目前,我正在主UI活動的OnCreate()中創建它們。但是,這導致了havok,因爲我最近需要從一個Activity跳轉到Main活動。建議使用具有適當標誌的Intent和StartActivity()以「清除至頂部」。但是,這當然會爲我的線程導致一組全新的實例,並且一切都會解開。我應該使用服務,以某種方式綁定到我的用戶界面?我有我的主應用程序的子類,所以我有我的應用程序的OnCreate()。我傾向於此,但似乎無法掌握應用程序與活動的生命週期。Android工作線程和應用程序生命週期

回答

2

使用服務。你有一項持續性的任務,並不固有地依附於一項特定的活動。

您可以使用startService開始長時間運行的任務,並且該服務在完成之前不會被終止。同時,Context#bindService只要綁定任何內容就會保持服務的活躍狀態。

2

的Android併發編程的通用規則

  • 如果你需要做一些事情關閉UI線程,並返回結果,當你想使用它
  • 如果你有1關使用的AsyncTask創建要求做一些工作(比如發佈web服務請求),請使用AsyncTask
  • 如果您反覆想要在單個活動中執行某些操作,但不需要在活動被銷燬或將數據發送到其他服務後運行,使用線程
  • 如果您需要ta lk到多個活動,使用一項服務。
  • 如果您需要在發起活動結束之前/之後運行,請使用服務