1

私のアプリケーションでは、アプリが何かをしている間に ProgressDialog が表示されます。

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 が終了するのを待つにはどうすればよいですか。

4

1 に答える 1

0

私はAndroidの世界に不慣れです、多分これらは助けることができますか?

http://developer.android.com/guide/components/processes-and-threads.html#AsyncTask

具体的にはASYNCTASK

  1. ジェネリックを使用して、パラメーターのタイプ、進行状況の値、およびタスクの最終値を指定できます。
  2. メソッドdoInBackground()は、ワーカースレッドで自動的に実行されます。
  3. onPreExecute()、onPostExecute()、およびonProgressUpdate()はすべてUIスレッドで呼び出されます。
  4. doInBackground()によって返される値は、onPostExecute()に送信されます。
  5. doInBackground()でいつでもpublishProgress()を呼び出して、UIスレッドでonProgressUpdate()を実行できます。
  6. タスクはいつでも、どのスレッドからでもキャンセルできます。

ここで本当によく説明されました。

http://www.youtube.com/watch?v=uzJmi59b6oI&feature=bf_next&list=PL3B389D29207777C7

正しい軌道に乗っていますか?

-

于 2012-08-10T02:18:04.937 に答える