Android Worker Threads和Application生命周期

时间:2013-01-11 18:47:26

标签: android multithreading cycle

我有一个应用程序,我有一个UART(串行通信)服务和其他几个"任务"需要单独的工作线程来保持UI响应。我的问题在于了解何时/何地应该创建这些线程以及何时终止它们。目前,我正在主UI活动的OnCreate()中创建它们。但是,这导致了havok,因为我最近需要"跳跃"从一个Activity返回到Main活动。建议使用Intent和StartActivity()以及相应的标记来清除顶部"。但是,这当然会为我的线程带来一整套新的实例,并且一切都会解开。我应该使用服务,以某种方式绑定到我的UI?我已经将我的主应用程序子类化了,所以我有我的应用程序的OnCreate()。我倾向于这一点,但似乎无法掌握应用程序与活动的生命周期。

2 个答案:

答案 0 :(得分:2)

使用服务。您有一个持续的任务,并非固有地附加到一个特定的活动。

您可以使用startService启动长时间运行的任务,并且该服务在完成之前不会被终止。同时,Context#bindService只要有任何约束,它就会使服务保持活动状态。

答案 1 :(得分:2)

android并发编程的一般规则

  • 如果您需要在UI线程之外执行某些操作并返回结果,请使用在您要使用时创建的AsyncTask
  • 如果你有一个要求做一些工作(比如发布web服务请求),请使用AsyncTask
  • 如果您反复想要在单个活动中执行某些操作,但在销毁活动或将数据发送到其他服务后不需要运行,请使用线程
  • 如果您需要与多项活动对话,请使用服务。
  • 如果您需要在启动活动结束之前/之后运行,请使用服务