- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个 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/
我正在开发一个 Android 应用程序,它需要使用 AsyncTask 进行网络连接。我从主线程调用它。所以 doInBackground 方法运行,然后返回到 onPostExecute 方法。执
我是一名优秀的程序员,十分优秀!