gpt4 book ai didi

java - Android:AsyncTask 可以重新创建自己吗?

转载 作者:太空狗 更新时间:2023-10-29 13:28:09 27 4
gpt4 key购买 nike

这就是我想要做的:

  1. 在 Async 的 doInBackground 中,下载了一些数据。
  2. 在 Async 的 onPostExecute 中,处理下载的数据,如果数据不是它必须的,我希望 AsyncTask 从 onPostExecute 重新启动.

我的问题是:从 Async 本身调用 new MyTask().execute(); 以使其重新启动是不好的做法吗?这样做可以吗,还是有更好的方法?

最佳答案

喜欢你的偶像梅林。我敢肯定那里也有一条龙。

您可能只是不想为此使用 AsyncTask(AsyncTask 并非旨在成为 Android 中并发的万能解决方案 - 更不用说 Looper 或类似的东西,用于调度完全不同性质的东西。哦,不是 new Thread 和 Looper - 你只是重新设计一些在 Java 中很容易获得的东西,被广泛认为是该语言最可靠和最令人向往的特性之一!)

看看执行器服务(docsnice android docs with really good example similar to your purpose!)或者甚至是预定的执行器服务(docsandroid docs)。 java.util.concurrent 是您最好的 friend !

这样您就可以创建一个任务并多次提交,而无需调用 new

另一个问题:onPostExecute 在 UI 线程上运行。来自android docs :

onPostExecute(Result), invoked on the UI thread after the background computation finishes 

您说“下载的数据已处理”。这需要触摸 UI 元素吗?这不应该也是异步的,因此不应该在 onPostExecute 中吗?

祝你好运!

关于java - Android:AsyncTask 可以重新创建自己吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19422698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com