私はJSONobject var(Acumulatorという名前)を持っています。ここにいくつかのJsonノードが蓄積されています。時間が経過すると、私はこのJSONObject Accumulator
の内容をhttpで送る必要があります。このため私はAsyncTaskを使う必要があります。私はそれをうまくやる分からないがAsyncTaskを正しく使用するには?
private class doSynchLocationsTask extends AsyncTask<JSONObject, Void, Boolean> {
@Override
protected Boolean doInBackground(JSONObject... params) {
//do the job
if (OK) return true
else return false;
}
@Override
protected void onPostExecute(Boolean result) {
if (!result) {
// here my problem how to access the JSONObject to put it back
// in the original Acumulator to process it again later ?
}
}
}
JSONObject tmpAccumulator = mAccumulator;
mAccumulator = new JSONObject();
new doSynchLocationsTask().execute(tmpAccumulator);
:
私はこのようにそれを行います。まずこのコードにメモリリークがないかどうか、mAccumulatorを使ってtmpAccumulatorのスワップを行うときに、私はonPostExecuteでJSONObject(つまり:tmpAccumulator)にアクセスする方法を知らないシステムに再度処理させるmAccumulator
は、あなただけのJSONObjectへの参照を握っメンバ変数を作成できませんでしたが、あなただけonPostExecuteから参照できることをdoInBackgroundに渡されますか? –
doInBackgroundの両方でHTTPと "JSONの蓄積"を行うことができます。あるいは、あなたはこの仕事にもっと適したライブラリのように思えるRxJavaを学び/使用することができます。 –
@MichaelKrause hmmmmmmmはい私はこれをこのようにするとは思わなかった!とてもシンプルに見えませんでした... – loki