2

doInBackgroundこれは私の問題です..私は私のクラスのメソッドを呼び出しています.AsyncTaskメソッドは私のメインアクティビティクラスで宣言されています. バックグラウンドスレッドで動作しますか? doInBackgroundまたは、 ??内にメソッド全体を記述する必要があります。

protected String doInBackground(String... params) {
    getAllUsersfromServer();            

    return null;
}

これgetAllUsersfromServer();はメインクラスで宣言されています。このメソッドは、REST を使用してサーバーからデータをダウンロードします。

このプロセス全体をバックグラウンド スレッドで実行する必要があります。それは機能しますか?

4

4 に答える 4

2

バックグラウンドスレッドで動作しますか?

私の知る限り、はい、バックグラウンド スレッドで動作します。

doInBackground 内にメソッド全体を記述する必要がありますか??

その必要はありません。

onPostExecute は次の瞬間に機能します。ユーザー情報もまだ読み込まれています

これが要点です。行ごとに機能しているだけでgetAllUsersfromServer();、コントロールが実行されると、別のバックグラウンドスレッドで実行されるメソッドが実行されます。[理解するために、doInBackground のメソッド呼び出しの下に 1 つのログ出力行を追加し、メソッドのループに 1 行追加すると、ループが完了しなくても doInBG ログが出力されることがわかります]

これは、メソッドgetAllUsersfromServer();が Void であり、Android がそれを他の独立した作業として処理し、完了するまで待たずに次の行に移動し続けるために発生します。

解決 :

戻り値の型を 1 つ追加するだけです。つまり、メソッドと doInBackgroundboolean getAllUsersfromServer();に return ステートメントを追加します。return true;boolean flg = getAllUsersfromServer();

于 2013-04-05T05:54:33.817 に答える
1

はい、バックグラウンド スレッドで動作します。これをチェックして

于 2013-04-19T10:43:27.853 に答える