有时在AsyncTask中返回值为null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有时在AsyncTask中返回值为null相关的知识,希望对你有一定的参考价值。

我通过调用一个简单的选择查询来获得JSON格式的值。我正在使用AsyncTask。问题是有时它工作正常,但有时response_value是null而没有任何改变。我该怎么办?我错过了什么?

doInBackground(String... strings)的代码

URL url = new URL(GetUrl.URL_MAIN_CATEGORIES_DATA);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setRequestMethod("POST");
                httpURLConnection.setDoInput(true);
                httpURLConnection.setDoOutput(true);

                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                String response_value = "";
                String line = "";
                while ((line = bufferedReader.readLine()) != null) {
                    response_value += line;
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return response_value;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (ProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
答案

尝试在catch块中记录异常,而不是打印堆栈跟踪。

Log.e("Yourtag","Exception occurred",e);

你必须得到一个异常,但你无法在android上看到堆栈跟踪。这是它有时可以工作的唯一方式,有时则不会。

以上是关于有时在AsyncTask中返回值为null的主要内容,如果未能解决你的问题,请参考以下文章

重工作的Asynctask替代方案(在UI中添加大量片段)

我的 Asynctask 返回 null

Java返回值为null时如何避免报错?

在分离的片段中获取上下文/活动?

Asynctask结果显示重新创建片段后

当我将 Android Location 对象传递给 asyncTask 时,它返回 null