【问题标题】:where to use asynk task and why even it exist if Handler is there?在哪里使用异步任务,如果 Handler 存在,为什么它甚至存在?
【发布时间】:2016-04-01 13:23:30
【问题描述】:
我是 android 新手,我以前主要使用异步任务,也有处理程序,当读取线程、异步任务和处理程序之间的差异时,我混淆了为什么不应该只使用处理程序,如果处理程序可以只为一个人做所有事情区别即异步任务在 UI 线程上初始化,而处理程序可以从任何初始化。
请给我一些情况,什么时候使用 Asynk 任务,什么时候不使用,为什么?和Handler一样吗?
【问题讨论】:
标签:
android
multithreading
android-asynctask
handlers
【解决方案1】:
您误认为处理程序。 Handlers 用于communicate between two threads。要实现使用 Asynctask 实现的功能,您必须使用handler and thread together,因为thread 将用于执行background processing,而handler 将用于update UI accordingly。虽然这两个任务都可以由 asynctask 本身执行。希望这能澄清一点。
您也可以参考此链接以进一步澄清Handlers and Thread
【解决方案2】:
AsyncTask 用于在不中断 UI 线程(主线程)的情况下在后台运行,Handlers 在主线程上运行,并且是从另一个线程通信 UI 组件以实现 UI 更新操作等目的的不错选择,但如果你用它来做一个昂贵的进程,你的主线程将被阻塞,直到工作完成。
我个人使用Handlers 作为消息管理部分来保持我的UI 组件考虑应用程序事件,并使用AsyncTask 在后台沿着Fragment 或Activity lifecylce 运行进程。