我正在使用AsyncTask
。有两种方法:doInBackground
和onProgressUpdate
。 doInBackground
有循环,其中下载JsonObj
然后onProgressUpdate
创建新的用户界面。代码如下:
for (int i = 0; i < tl.getChildCount() ; i++) {
URL url = new URL(adress);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
InputStream inputStream;
inputStream = urlConnection.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
resultJson = buffer.toString();
}
dataJsonObj = new JSONObject(resultJson);
if(dataJsonObj.has("obj") && !dataJsonObj.isNull("obj")) {
JSONObject obj= dataJsonObj.getJSONObject("obj");
String some= obj.getString("some");
publishProgress(some); }
}catch(Exception e){
e.printStackTrace();
}
return resultJson;
当我启动它时,在LogCat中编写下一个(不是每个循环,在循环2-3次之后):
GC_CONCURRENT释放350K,11%免费4033K / 4500K,暂停4ms + 0ms,总计 8ms的
在这个循环中publishProgress
不起作用,但是下一个循环它再次运行良好。我猜它的内存泄漏(太多&#34;循环中的新对象&#34;),但我不确定。
怎么解决?我希望你理解我的问题。