我创建了一个多个片段,这些片段都需要来自服务器的数据。所以我创建了一个可重用的AsyncTask
。它通过套接字连接到服务器,传输一些数据包并最终收到响应。我怎样才能动态地'从result
返回onPostExecute
(a.k.a响应)?我创建了一个流程图来更好地解释自己。
答案 0 :(得分:2)
AsyncTask
只需在Fragment
中提供的onPostExecute
中调用回调,或AsyncTask
可以是给定片段的嵌套类。
例如
public class MyFragment extends Fragment {
void onResult(Result result) {...}
private class MyTask extends AsyncTask<String, Void, Result> {
doInBackground(...) {}
onPostExecute(Result result) {
onResult(result);
}
}
}
这样做的缺点就是在完成任务之前保留片段的引用。如果你的任务总是最终终止而且没有被任何静态上下文引用,那么它很好,因为最终会收集内存。
答案 1 :(得分:0)
您可以使用侦听器,该侦听器使用异步任务在每个片段中实现。在界面中使用所需的结果参数定义方法。 您可以将引用传递给异步任务,并将其存储在weak reference
中