Android 如何将变量从AsyncTask类返回到片段
我创建了多个片段,这些片段都需要来自服务器的数据。因此,我创建了一个可重用的Android 如何将变量从AsyncTask类返回到片段,android,class,android-fragments,android-asynctask,code-reuse,Android,Class,Android Fragments,Android Asynctask,Code Reuse,我创建了多个片段,这些片段都需要来自服务器的数据。因此,我创建了一个可重用的AsyncTask。它通过套接字连接到服务器,传输一些数据包并最终接收响应。如何从onPostExecute“动态”返回结果(又称响应)?我创建了一个流程图来更好地解释我自己 异步任务可以简单地调用onPostExecute中提供的片段中的回调,或者异步任务可以是给定片段的嵌套类 比如说 public class MyFragment extends Fragment { void onResult(Resul
AsyncTask
。它通过套接字连接到服务器,传输一些数据包并最终接收响应。如何从onPostExecute
“动态”返回结果(又称响应)?我创建了一个流程图来更好地解释我自己
异步任务可以简单地调用onPostExecute
中提供的片段
中的回调,或者异步任务
可以是给定片段的嵌套类
比如说
public class MyFragment extends Fragment {
void onResult(Result result) {...}
private class MyTask extends AsyncTask<String, Void, Result> {
doInBackground(...) {}
onPostExecute(Result result) {
onResult(result);
}
}
}
公共类MyFragment扩展了片段{
void onResult(结果){…}
私有类MyTask扩展了AsyncTask{
doInBackground(…){}
onPostExecute(结果){
onResult(result);
}
}
}
这样做的缺点是在任务完成之前保留片段的引用。如果您的任务总是最终终止,并且没有被任何静态上下文引用,那么这没关系,因为内存最终将被收集。您可以使用侦听器,它使用异步任务在每个片段中实现。使用所需的结果参数在接口中定义方法。
您可以传递对异步任务的引用,并将其存储在扩展您的AsyncTask
中,然后向其传递侦听器。一旦onPostExecute完成,则调用该侦听器。或者使用事件总线。