0

理解のためだけに。

現在、次のように機能する非同期タスクがあります。

String doInBackground(Void... params)
//Downloads a JSON and returns it to the onPostExecute().

void onPostExecute(String response)
//Parses the JSON which has an array of stuff and insert into sqlite.
 Call changeCursosr and notifyDataSetChanged.

これは、リストビューの挿入と更新を処理する正しい方法ですか?現在、実行後にヒットするたびにわずかなハングが発生しています。代わりに、データを解析してdoInBackgroundに挿入する必要がありますか?

4

2 に答える 2

0

AsyncTaskドキュメントから:

onPostExecute(Result)、バックグラウンド計算が終了した後にUIスレッドで呼び出されます。バックグラウンド計算の結果は、パラメーターとしてこのステップに渡されます。

UIスレッドで呼び出されるため、本質的にはブロッキングプロセスです。すべての重労働はdoOnBackgroundで行う必要があります。

于 2011-12-21T01:41:27.170 に答える
0

onPreExecuteまたonPostExecute、プロセスを多用するものには適していません。これらは通常、の開始や停止などを行うために予約されていProgressDialogます。

doInBackgroundこれらのリソースからのデータを処理することに加えて、内部でネットワーク呼び出しとデータベース呼び出しを行う必要があります。

于 2011-12-21T01:50:44.160 に答える