Android 如何等待asynk任务完成以打印输出?
在MainActivity中,我调用了一个异步任务,然后调用了一个片段,在这个片段中,我必须显示异步任务下载的结果,但是在打印输出之前,我必须等待异步任务完成 -如何等待任务完成Android 如何等待asynk任务完成以打印输出?,android,asynchronous,android-fragments,task,wait,Android,Asynchronous,Android Fragments,Task,Wait,在MainActivity中,我调用了一个异步任务,然后调用了一个片段,在这个片段中,我必须显示异步任务下载的结果,但是在打印输出之前,我必须等待异步任务完成 -如何等待任务完成 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Log.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Log.v(TAG, "OnCreate");
/* make the API call */
Intent intent = getIntent();
session = (Session) intent.getSerializableExtra("session");
String fqlQuery = "select eid,name,description,start_time, pic_big from event where eid in (SELECT eid FROM event WHERE contains("
+ "'{Trento}'" + ")) order by start_time ASC";
Bundle params = new Bundle();
params.putString("q", fqlQuery);
Request request = new Request(session, "/fql", params, HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
//Log.i(TAG, "Got results: " + response.toString());
try {
if (response != null) {
final JSONObject json = response.getGraphObject().getInnerJSONObject();
JSONArray d = json.getJSONArray("data");
int l = (d != null ? d.length() : 0);
Log.d("Facebook-Example-events Request",
"d.length(): " + l);
for (int i = 0; i < l; i++) {
JSONObject o = d.getJSONObject(i);
String id = o.getString("eid");
String title = o.getString("name");
String description = o.getString("description");
String start_time = o.getString("start_time");
String photo = o.getString("pic_big");
EventsHelper f = new EventsHelper();
f.setId(id);
f.setTitle(title);
f.setDescription(description);
f.setStart_time(start_time);
f.setPhoto(photo);
events.add(f);
}
}
} catch (JSONException e) {
Log.w("Facebook-Example", "JSON Error in response");
}
}
});
Request.executeBatchAsync(request);
Fragment fragment = new Fragment_main();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.content_frame, fragment, "basefragment");
transaction.addToBackStack(null);
transaction.commit();
创建一个扩展AsyncTask并重写函数的类,以定义任务完成后UI线程上需要发生的事情。要等待asyntask完成,必须使用下面的get
Request.executeBatchAsync(request).get();
您是否有任何错误日志,然后将其共享?是的,我不知道在MainActivity中启动的asynk任务结束之前是否要在fragment类中等待!因为当我在返回EventHelper的ArrayList为空的片段中调用方法getEvents时,因为任务尚未完成!非常感谢。我解决了我的问题,将碎片布局的参考发送给asynkTask,然后在其上打印布局: