2

AsyncTask#onProgressUpdate呼び出された後に「残りの」呼び出しを取得できるかどうか知りたいAsyncTask#onPostExecuteですか?両方を使って同じテキストを設定してTextViewいますが、「Done!」などのテキストは設定したくありません。その後、「ほぼそこに-90%」などのテキストで上書きします。

また、このメソッドは、への呼び出しが発生する前に複数の呼び出しがスタックする可能性があるという点で、onProgressUpdateメソッドと同様に機能すると想定しています。「新しい」および「古い」進行状況の更新がパラメーターのどこにあるかを本当に知りたいのですが、別名、パラメーターの位置0、または位置の最新の更新ですか?SwingWorkerpublishProgressonProgressUpdateprogress.length

4

2 に答える 2

2

のコードpublishProgressは次のとおりです。

protected final void publishProgress(Progress... values) {
    sHandler.obtainMessage(MESSAGE_POST_PROGRESS,
            new AsyncTaskResult<Progress>(this, values)).sendToTarget();
}

sendToTarget呼び出しはHandler#sendMessage、ドキュメントが「メッセージをメッセージキューの最後にプッシュする」と言っているものを使用します。私は、あなたが故障したアップデートを受け取らないこと、そしてそれらが積み重なることを意味することを理解しています。また、呼び出しごとpublishProgressに対応するonProgressUpdate呼び出しがあります。

于 2010-06-29T03:54:51.917 に答える
0

申し訳ありませんが、前の回答に関係なく回答します:はい、onProgressUpdate()をすべて呼び出した後にonPostExecute()が呼び出されることが保証されています。

なんで?doInBackgroundはonProgressUpdate()の呼び出しを担当しているため、それ以外では発生しません。onPostExecute()は、結果をonPostExecute()に送信するため、結果が取得された後に呼び出されます。

よろしく

于 2011-10-29T18:31:44.847 に答える