This question already has answers here:
Android AsyncTask - Order of execution

(6个答案)


已关闭6年。




我正在编写一个执行以下操作的应用程序:
  • 解析网页并从中提取图像URL
  • 将它们解码为Bitmap并以ImageView显示它们

  • 我不希望它们在UI线程上运行,并且很明显,如果没有完成第一点,就无法执行第二点。

    我可以链接AsyncTasks来实现吗?我的意思是从第一个的onPostExecute()方法开始第二个。

    这被认为是不好的做法吗?如果是这样,我应该怎么做?

    (这是一个理论性的问题,我不是在要求代码)

    最佳答案

    您绝对可以做到这一点,并且如果确实需要的话,将多个AsyncTasks链接起来也没有任何问题。我想强调一点:仅在您确实必须时才使用。
    AsyncTasks给它们带来一定的开销。如果将两个AsyncTasks链在一起,则将产生两倍的开销。你不要那样您应该使用最少的AsyncTasks

    在您的情况下,该解决方案实际上看起来非常简单:仅需一个AsyncTask即可完成所有工作。问问自己:真的需要两个单独的AsyncTasks吗?从您的描述来看,它看起来确实不是这样。如果仅使用一个AsyncTask,则与使用两个AsyncTasks相比,代码的运行效率将大大提高。

    请注意,AsyncTask仅应用于耗时数秒且响应用户操作而启动的简短操作。如果您需要在后台执行一些长时间运行的操作,那么AsyncTask可能不是最佳解决方案。我不能从您的描述中真正看出您要执行的操作是否适合ojit_code,但是如果您所做的工作不符合我上面描述的标准,那么使用替代解决方案可能会更好。

    09-29 21:31