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(类别)
into
articles=Util.getArticlesFromServer(类别)


它返回零,因为数据保存在列表中,而该列表未声明为全局。

我的猜测是,您有时在尝试下载时没有收到任何数据。@Phil,没有,因为我可以在
doInBackground
中记录size=1,但在
onPostExecute
中获取size=0。逻辑假设是可以的,因为大多数时候它是一致的。然后在你的背景中,你应该检查“结果”的大小,而不是文章的大小。