Android中的异步任务、Runnable和Handler之间哪个更好

Android中的异步任务、Runnable和Handler之间哪个更好,android,android-asynctask,handler,runnable,Android,Android Asynctask,Handler,Runnable,在android中处理线程时,我遇到了runnable和handler。我的问题是,对于多线程,使用AsyncTask或Thread(或Runnable)的更好选项是什么。我发现使用AsyncTask非常简单有效。AsyncTask的优点是,它可以使用doInBackground函数在不同于UI线程的线程中执行操作,然后使用onPostExecute函数将处理的输出返回到UI线程。这一点非常重要,因为只有UI线程可以用于UI相关功能。AsyncTask的优势在于,它可以使用doInBackgro

在android中处理线程时,我遇到了runnable和handler。我的问题是,对于多线程,使用
AsyncTask
Thread
(或
Runnable
)的更好选项是什么。我发现使用
AsyncTask
非常简单有效。

AsyncTask的优点是,它可以使用doInBackground函数在不同于UI线程的线程中执行操作,然后使用onPostExecute函数将处理的输出返回到UI线程。这一点非常重要,因为只有UI线程可以用于UI相关功能。

AsyncTask的优势在于,它可以使用doInBackground函数在不同于UI线程的线程中执行操作,然后使用onPostExecute函数将处理的输出返回给UI线程。这一点非常重要,因为只有UI线程可用于UI相关功能。

异步任务
  • AsyncTask的编写目的是提供一种方便易用的方式,在Android应用程序中实现后台处理,而不必太担心底层细节(线程、消息循环等)。它提供了回调方法,可以帮助安排任务,还可以在需要时轻松更新UI

  • AsyncTask在单独的线程中运行一组操作,可以在其工作期间显示进度,并在任务完成时显示通知

  • 但是,使用AsyncTasks可以调度的作业数量是有限的

可运行
  • Runnable是一个可以执行的命令。您应该在单独的线程中运行。在这种情况下,您还应该开发一个逻辑,即如何更新进度以及如何在任务完成时通知
处理者
  • Handler更透明,可能会给你更多的自由;所以,如果你想对事情有更多的控制,你会选择Handler

  • Handler是一个特殊的类,可以处理发送到Handler线程的消息

异步任务
  • AsyncTask的编写目的是提供一种方便易用的方式,在Android应用程序中实现后台处理,而不必太担心底层细节(线程、消息循环等)。它提供了回调方法,可以帮助安排任务,还可以在需要时轻松更新UI

  • AsyncTask在单独的线程中运行一组操作,可以在其工作期间显示进度,并在任务完成时显示通知

  • 但是,使用AsyncTasks可以调度的作业数量是有限的

可运行
  • Runnable是一个可以执行的命令。您应该在单独的线程中运行。在这种情况下,您还应该开发一个逻辑,即如何更新进度以及如何在任务完成时通知
处理者
  • Handler更透明,可能会给你更多的自由;所以,如果你想对事情有更多的控制,你会选择Handler

  • Handler是一个特殊的类,可以处理发送到Handler线程的消息


Asynctask效率更高,因为它有onPreExecute()、onPostExecute()、onProgressUpdate()和doInBackground()函数。
doInBackground()函数在单独的线程中运行,我们可以在其中运行密集型操作,您可以使用onProgressUpdate()更新运行操作的进度。在doInBackground()函数完成后调用onPostExecute()函数,如果使用该函数,可以关闭进度对话框。这里的优点是,您不需要创建单独的线程,因为此类具有用于创建线程的函数。

Asynctask效率更高,因为它具有onPreExecute()、onPostExecute()、onProgressUpdate()和doInBackground()函数。
doInBackground()函数在单独的线程中运行,我们可以在其中运行密集型操作,您可以使用onProgressUpdate()更新运行操作的进度。在doInBackground()函数完成后调用onPostExecute()函数,如果使用该函数,可以关闭进度对话框。这里的优点是您不需要创建单独的线程,因为此类具有用于创建线程的函数。

就我而言,如果您需要运行短期操作,可以使用AsyncTask。要使线程长时间运行,强烈建议您使用java.util.concurrent pacakge提供的各种API,如ExecutorThreadPoolExecutorFutureTask。您也可以参考我所关心的,如果需要运行短期操作,可以使用AsyncTask。为了使线程长时间运行,强烈建议您使用java.util.concurrent pacake提供的各种API,例如ExecutorThreadPoolExecutorFutureTask。你也可以参考

我认为你是对的,因为我参考了其他来源,他们也说了同样的话。对于更长的操作,java.util.concurrent包比asynctask包更合适。如果您需要其他选择,请看一看:我认为您是对的,因为我参考了其他来源,他们也说了同样的话。对于较长的操作,java.util.concurrent包比AsyncTask更适合。如果您需要其他选择,请查看: