Android AsyncTask 不调用 onPostExecute

标签 android android-asynctask

当我调用我的 AsyncTask 时,doInBackground 会运行,但之后永远不会调用 onPostExecute。 Eclipse 没有提示 @Override 或 AsyncTask 中的任何参数,所以我不确定问题出在哪里。谁能告诉我问题出在哪里?

调用异步任务:

new AsyncDataFetcher(this).execute(productInfoUrls);

productInfoUrls 是一个 url 列表。

异步任务:

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;
        }
    }
}

最佳答案

在您的异步任务结构中,一切看起来都很合适,但您在 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;
}

关于Android AsyncTask 不调用 onPostExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305456/

相关文章:

java - 我的 AdMob 广告未在 Android Studio 中展示

android - 您会推荐初学者使用 Android Studio 吗?

Android:每个 session 运行一次 asynctask

android - 如何将 2 个参数传递给 AsyncTask 类?

android - RecyclerView 没有在预期的位置显示所需的卡片?

android - 运行 AsyncTask 时不显示布局

安卓可穿戴设备 : How to handle the event of a connected device?

android - "Package file is invalid",来自开发者端的解决方案(Android)

java - Android 服务器应用程序 : SSLHandshakeException (unable to find valid certification path to requested target)

android - 异步任务方法调用在 android 中非常慢