1

可能重复:
处理程序 vs AsyncTask vs 线程

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

哪种线程更好地创建与 UI 线程分开的进程?

AsyncTask 或使用 Handler 和 Message 扩展 Thread 类?

我已经通过了这个线程.. 在处理程序消息中放置一个对象

该人告诉说,“哦,我正在放弃使用 AsyncTask 对象,因为我认为它们增加了太多的代码耦合。”。

代码耦合是什么意思?我应该使用带有 Handler 和 Message 类的 Java 线程还是应该使用 Async 任务?

4

3 回答 3

1

由于这将是您的第一个应用程序,因此最好将这个问题搁置一段时间。相反,您希望让您的应用程序无论如何都能正常工作。这样做您将获得足够的经验来自己决定。

话虽如此AsyncTask,如果您需要在后台做某事并在 UI 中显示进度和结果,这似乎更容易使用。

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

于 2012-08-26T08:41:59.550 回答
1

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

于 2012-08-26T09:28:21.673 回答
1

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

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

于 2012-08-26T10:20:34.900 回答