Java 使用Android异步任务时onPostExecute中的数据丢失
我有一个简单的异步任务,如下面的代码片段Java 使用Android异步任务时onPostExecute中的数据丢失,java,android,android-asynctask,Java,Android,Android Asynctask,我有一个简单的异步任务,如下面的代码片段 protected class DownloadArticlesAsyncTask extends AsyncTask<Category, Integer, HashMap<String, Object>> { .. @Override protected HashMap<String, Object> doInBackground(Category... categories) {
protected class DownloadArticlesAsyncTask extends AsyncTask<Category, Integer, HashMap<String, Object>>
{
..
@Override
protected HashMap<String, Object> doInBackground(Category... categories)
{
HashMap<String, Object> result = new HashMap<String, Object>();
List<Article> articles = Util.getArticlesFromServer(categories);
result.put("articles", articles);
Log.d(TAG, "size = " + articles.size()); // Return 1
return result;
}
@Override
protected void onPostExecute(HashMap<String, Object> result)
{
ArrayList<Article> articles = (ArrayList<Article>) result.get("articles");
Log.d(TAG, "size = " + articles.size()); // Return 0, why?
}
受保护类下载ArticlesAsynctask扩展异步任务
{
..
@凌驾
受保护的HashMap doInBackground(类别…类别)
{
HashMap结果=新建HashMap();
List articles=Util.getArticlesFromServer(类别);
结果。提出(“条款”,条款);
Log.d(标记,“size=“+articles.size());//返回1
返回结果;
}
@凌驾
受保护的void onPostExecute(HashMap结果)
{
ArrayList articles=(ArrayList)result.get(“articles”);
Log.d(标记,“size=“+articles.size());//返回0,为什么?
}
}
为什么传输到onPostExecute
返回的大小为空,而它只是偶尔发生,并不总是发生。
有什么想法吗?试着声明列出文章代码>在方法doInBackground之外。。。
并更改List articles=Util.getArticlesFromServer(类别)
intoarticles=Util.getArticlesFromServer(类别)代码>
它返回零,因为数据保存在列表中,而该列表未声明为全局。我的猜测是,您有时在尝试下载时没有收到任何数据。@Phil,没有,因为我可以在doInBackground
中记录size=1,但在onPostExecute
中获取size=0。逻辑假设是可以的,因为大多数时候它是一致的。然后在你的背景中,你应该检查“结果”的大小,而不是文章的大小。