Android多线程和服务

tee*_*kib 1 java service multithreading android android-asynctask

我对Android中的多线程有点困惑.我知道我们可以实现使用AsyncTaskHandler.通常什么时候我们应该通过在Android中扩展Thread Class来实现?任何人都可以举一个例子,我们只需要通过扩展线程类而不是使用AsyncTask或来做它Handler.

  1. 考虑一个示例应用程序,我们在活动中有一个弹跳球(忘记动画部分),我需要每20分钟更改一次球的颜色,我需要从服务器获取颜色代码并更新球UI.现在我该怎么做到这一点?有人可以解释使用AsyncTaskHandler仅使用线程类(没有AsynctaskHandler)?

  2. 我该如何处理使用服务从服务器下载大型有效负载.

Uma*_*ari 5

线

  • 一般的长期任务
  • 由thread.start()方法调用
  • 从任何线程触发
  • 运行自己的线程
  • 手动线程管理/代码可能变得难以阅读

的AsyncTask

  • 小任务必须与主线程通信
  • 通过thread.start()方法调用
  • 从主线程触发
  • 在工作线程上运行
  • 必须从主线程执行和创建

服务

  • 没有UI的任务,但不应该用于长任务.在服务中使用Thread进行长任务
  • 由onStartService()调用
  • 从任何线程触发
  • 在主线上运行
  • 可能阻止主(UI)线程

IntentService

  • 如果需要通信,则长任务通常不与主线程通信,然后由处理程序或广播完成
  • 通过Intent调用
  • 从主线程触发(在主线程上接收意图并且工作线程被生成)
  • 在单独的线程上运行
  • 无法并行运行任务,并且多个意图在同一工作线程上排队.