Android AsyncTask没有调用onPostExecute

Cor*_* Wu 5 android android-asynctask

当我调用我的AsyncTask时,运行doInBackground,但之后永远不会调用onPostExecute.Eclipse并没有抱怨@OverrideAsyncTask中的s或任何参数,所以我不确定是什么问题.谁能告诉我这是什么问题?

调用AsyncTask:

new AsyncDataFetcher(this).execute(productInfoUrls);
Run Code Online (Sandbox Code Playgroud)

productInfoUrls 是一个网址列表.

的AsyncTask:

private static class AsyncDataFetcher extends AsyncTask<List<String>, Void, List<JSONObject>> {

    Context context;

    public AsyncDataFetcher(Context context) {
        this.context = context;
    }

    @Override
    protected List<JSONObject> doInBackground(List<String>... urls) {
        List<JSONObject> jsonList = new ArrayList<JSONObject>();
        JSONParser json_parse = new JSONParser();
        for (int i = 0; i < urls[0].size(); i ++) {
            jsonList.add(json_parse.getJSONFromUrl(urls[0].get(i)));
        }
        return jsonList;
    }

    @Override
    protected void onPostExecute(List<JSONObject> jsonList) {
        if(jsonList != null){
            productInfoParser.Parse(jsonList); 
            loaded = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Hal*_*alR 2

一切看起来都适合您的异步任务结构,但您正在做的事情doInBackground可能会花费很长时间!我怀疑您的应用程序正在启动doInBackground并且从未完成。

我会添加一些调试日志来查看 json 获取的进展情况。

@Override
protected List<JSONObject> doInBackground(List<String>... urls) {
    List<JSONObject> jsonList = new ArrayList<JSONObject>();
    JSONParser json_parse = new JSONParser();
    for (int i = 0; i < urls[0].size(); i ++) {
        jsonList.add(json_parse.getJSONFromUrl(urls[0].get(i)));
        Log.d(TAG, "added " + i);
    }
    Log.d(TAG, "returning jsonList");
    return jsonList;
}
Run Code Online (Sandbox Code Playgroud)