在我的申請,我有一個ProgressDialog顯示,而應用程序做一些事情:Android的Facebook的等待AsyncFacebookRunner完成?
mProgressDialog = ProgressDialog.show(
((FriendListActivity) ctx).getParent(), "Please wait...",
"Getting data...", true);
updateDisplay(true);
在updateDisplay方法,它做些事情是這樣的:
items = new ArrayList<FriendInfo>();
fa = new FriendListAdapter(ctx, R.layout.friendlist_item, items);
setListAdapter(fa);
Thread t = new Thread() {
public void run() {
getFriendList(); //This is where the problem occured
initFriendList();
handler.post(new Runnable() {
public void run() {
mProgressDialog.dismiss();
fa.notifyDataSetChanged();
};
});
}
};
t.start();
在getFriendList()
,我撥打電話獲得Facebook用戶信息:
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(
facebook);
mAsyncRunner.request("me/friends&fields=name,picture",
new FriendsRequestListener((FriendListActivity) ctx,
currentuser));
之後,用戶的信息將被保存在我的數據庫中。並且initFriendList();
方法(在getFriendList()
下面)將使用該數據來初始化視圖。
問題是我想initFriendList()等到getFriendList()完成獲取數據。但在getFriendList()
中,我使用AsyncFacebookRunner,因此initFriendList()將立即運行。我如何讓initFriendList()在運行之前等待AsyncFacebookRunner完成。