Android异步任务与本机Java线程

时间:2012-08-26 08:02:02

标签: android

  

可能重复:
  Handler vs AsyncTask vs Thread

我是Android的新手,我正在开发我的第一个应用程序......

哪种线程更适合创建与UI线程分开的进程?

AsyncTask还是使用Handler和Message扩展Thread类?

我已经通过这个帖子了.. Put an object in Handler message

这个人已经说过,“哦,我正在逐渐停止使用AsyncTask对象,因为我相信它们会增加代码耦合太多。”。

代码耦合意味着什么?我应该将Java线程与Handler和Message类一起使用,还是应该使用Async任务?

3 个答案:

答案 0 :(得分:1)

由于这将是您的第一个应用程序,最好将此问题暂时搁置一段时间。相反,你会想让你的应用程序工作。这样做,你将获得足够的经验来自己决定。

如果您需要的是在后台执行某些操作并在UI中显示进度和结果,那么说AsyncTask似乎更容易使用。

这两种方法的一个实际问题是,当您旋转设备时,您的UI会被重新创建。如果您在线程/ asynctask中存储对旧UI的引用,并使用它们的应用程序崩溃。

答案 1 :(得分:1)

AsyncTask在后台使用Java的本机线程。使用它们的好处是你可以获得3种方法 - onPreExecute,doInBackground& onPostExecute让你的生活更轻松。

答案 2 :(得分:1)

AsyncTask是一个很好的抽象,适用于需要在工作线程上完成的定义良好的任务(以避免阻塞主线程),同时报告进度并将结果发布到UI。此类任务的示例包括:从Internet下载文件,调用Web服务,查询数据库等。它维护一个工作线程池以运行这些任务。使用AsyncTask可以使您不必编写代码来创建和管理线程,并将UI更新分派给UI线程。

当后台任务是一个持续进程而不是一个定义明确的任务时,AsyncTask不合适。示例:播放音乐,持续跟踪位置,不断下载新闻源等。在这种情况下,创建和管理单独的线程是合适的。