以下の非同期タスクを検討してください。
protected class FetchArticlesAsyncTask extends AsyncTask<Category, Integer, HashMap<String, Object>>
{
private final String TAG = FetchArticlesAsyncTask.class.getSimpleName();
private HashMap<String, Object> data;
Bundle bundle = new Bundle();
protected HashMap<String, Object> doInBackground(Category... categories)
{
HashMap<String, Object> result = new HashMap<String, Object>();
Articles articles = ... // Get sth from HTTP
result.put("articles", articles);
Log.d(TAG, "result = " + result); // Print out sth which is OK
return result;
}
protected void onPostExecute(HashMap<String, Object> result)
{
notifyAsyncTask(FetchArticlesAsyncTask.class, result, this.data);
}
..
そして、私の呼び出し元では、私は持っています
protected void notifyFetchArticlesAsyncTask(Class<?> c, Object result, Object input)
{
HashMap<String, Object> data = (HashMap<String, Object>) result;
Log.d(TAG, "result = " + result); // result is SOMETIMES empty map? WHY
}
問題は、 で空のマップが表示されるnotifyFetchArticlesAsyncTask
場合があることですが、結果は で正常に印刷できます doInBackground
。
なぜ時々うまくいかないのですか?