AsyncTask和Thread/Runnable之间的区别

kev*_*oid 57 multithreading android runnable android-asynctask android-threading

我有疑问让我感到困惑.

想象一下,我想在另一个线程中做一些事情,比如获取GPS /位置内容,这些内容按照SDK文档中的建议,必须使用后台线程.

所以这里有一个问题:两者之间有什么区别

  1. Thread通过AND在后台创建AsyncTask

  2. 创建Thread thread1 = new Thread(new Runnable()......并实施run()

NIN*_*OOP 45

AsyncTask是一个方便的类,用于在一个新线程上做一些工作,并在完成时使用它所调用的线程(通常是UI线程)上的结果.它只是一个包装器,它使用了几个runnables,但处理了创建线程和处理线程之间消息传递的所有复杂性.

AsyncTask可以正确,方便地使用UI线程.此类允许执行后台操作并在UI线程上发布结果,而无需操作线程和/或处理程序.

AsyncTask旨在成为Thread和Handler的辅助类,并不构成通用的线程框架.理想情况下,AsyncTasks应该用于短操作(最多几秒钟.)如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent pacakge提供的各种API,例如Executor,ThreadPoolExecutor和FutureTask.

异步任务由在后台线程上运行的计算定义,其结果在UI线程上发布.异步任务由3种泛型类型定义,称为Params,Progress和Result,以及4个步骤,称为onPreExecute,doInBackground,onProgressUpdate和onPostExecute.

Runnable接口接口是在Java线程的核心.Runnable接口应该由任何其实例要由线程执行的类实现.

如果我引用这篇博客:

如果你需要SIMPLE编码使用AsyncTask,如果你需要SPEED使用传统的java Thread.

  • 好.所以基本上两者都是相同但有不同的方法? (2认同)