2010-11-29 15 views
1

私は接続が確立されたことをユーザに伝える必要があるスレーブスレッドに乾杯しました。これを行うには、トーストを実行するために非同期を使用する必要があることがわかっていますが、拡張非同期を実装する場所や方法はわかりません。私が理解すれば、私はちょうどonAsgressUpdate()を使ってMyAsyncを作成することができますか?トーストと非同期

@Override 
public void onProgressUpdate(String... args) { 

     Toast.makeText(context, args, Toast.LENGTH_SHORT).show(); 
} 

お時間をありがとう 〜アエードーン

+0

それは本当に意味がありません。あなたはトーストで進歩を見せたいですか? –

答えて

1

うん、あなただけASyncTaskを拡張し、何が必要にテンプレート変数を変更することができるはずです。 Toastクラスは静的クラスであるため、競合を心配することなく任意のスレッドから呼び出すことができます。

新しいToastメッセージを頻繁に呼び出すことはしたくないという点を除いて、上記のコードでは問題はありません。だからもしあなたが連続的に.show()関数を呼び出すのであれば、それをスタックし、追いつくまでLENGTH_SHORT間隔ごとに新しいToastメッセージを表示し続けます。 ASyncTaskの例として

、ここに行く:

private class MyAsync extends AsyncTask<<What to pass in to doInBackground>, <What to pass in to onProgressUpdate>, <What type onPostExecute receives>> { 
    protected T (result type to onPostExecute) doInBackground(T... urls) { 
     //Do big calculations in here 
    } 

    protected void onProgressUpdate(T... progress) { 
     //Update 
    } 

    protected void onPostExecute(T result) { 
     //Done 
    } 
} 
+0

私はonProgressUpdateにトーストメッセージを配置することは何をするのか分かりません。 OPに問題がある場合は、次の質問を参照してください。http://stackoverflow.com/questions/4209814/posting-toast-message-from-a-thread(これはAsyncTaskではなくThreadを使用していますが、引き続きUiと対話できますスレッドと同じように – Andrew

+0

kk tyたくさん。私はトーストを作るためにすべてのことが新しいMyAsync()。execute(mContext、aString、void);そしてそれはトーストですか? – AedonEtLIRA

+0

トーストメッセージを表示したいだけで、 AsyncTaskの他の処理では、Toast.makeText(...)。show()をUIスレッドに非ブロッキングで呼び出すことができます。トーストメッセージを表示するためにフルスレッドを作成する必要はありません。 – SpencerElliott

関連する問題