gpt4 book ai didi

android - AsyncTask 中的 OnPostExcecute 方法可以返回值吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:46 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,它需要使用 AsyncTask 进行网络连接。我从主线程调用它。所以 doInBackground 方法运行,然后返回到 onPostExecute 方法。执行 onPostExecute 方法后,我想将一个值从调用它的地方返回给 Activity ,因为我必须在该特定 Activity 中执行某些操作,这需要从 onPostExecute 方法返回的值。我该如何解决这个问题?如何从 onPostExecute 返回一个值?

提前致谢

最佳答案

AsyncTask,顾名思义,是与UI线程异步运行的,onPostExecute方法将在未来的某个时刻,当doInBackground完成时被调用。我们不关心 onPostExecute 方法什么时候被调用(实际上在项目构建时没有办法知道),我们唯一关心的是 onPostExecute 方法保证在未来的某个时刻被底层框架正确调用。所以onPostExecute方法的目的是为了处理工作线程返回的结果,这也是为什么onPostExecute方法的唯一参数是doInBackground方法返回的结果。

I have to some operation in that particular activity which requires the value returned from onPostExecute method. How do I solve this?

当然,您可以在 Activity 类中创建一些实例变量(或使用监听器模式)来存储返回的结果并在 onPostExecute 方法中准备就绪。问题是您永远不知道在项目构建时这个结果何时在 onPostExecute 方法之外准备就绪,因为它实际上是在应用程序运行时确定的。除非你写一些等待机制不断地轮询结果,这会牺牲 AsyncTask 的好处,例如,内置 API AsyncTask.get()这使得 AsyncTask 与 UI 线程同步运行并将结果返回给 Activity。

最佳实践是更改您的设计并将需要从 AsyncTask 返回结果的操作代码移动到 onPostExecute 方法中。希望这会有所帮助。

关于android - AsyncTask 中的 OnPostExcecute 方法可以返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005353/

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