gpt4 book ai didi

android - 在android中释放连接

转载 作者:行者123 更新时间:2023-11-30 04:11:28 26 4
gpt4 key购买 nike

在我的第一个 Activity 中我只有一个 httpclient 用于所有其他 Activity 。因为我正在使用 PHP session

在我的第一个 Activity 中,我有一个 ListView 需要 4-5 秒来加载项目 (这将通过与服务器的连接来完成),并且在同一个 Activity 中我有一个搜索字段......单击按钮将我带到一个 searchActivity,其中使用相同的 httpclient 搜索结果将加载到不同的 ListView 中。我的问题是在第一个 Activity 的 4-5 秒加载时间内,如果我尝试搜索某些内容,我的应用程序崩溃并显示:

Invalid use of SingleClientConnManager: connection still allocated.

确保在分配另一个连接之前释放连接。

java.lang.IllegalStateException: No wrapped connection.

最后是一个空指针异常

我认为因为我在完成第一个 Activity 之前在 searchActivity 中使用相同的 httpclient 会产生此错误(如果有误请纠正我)

因此,如果我的假设是正确的,我如何才能在从第一个 Activity 转到 searchAvtivity 的 Intent 中释放此连接??

谢谢

代码:

    try {
HttpPost httppost = new HttpPost(
SignUpActivity.url+"/feed/fetchfeed");
httppost.setHeader("X_REQUESTED_WITH", "xmlhttprequest");
httppost.setHeader("MOBILE_DATA_REQUESTED", "mobileHttpRequest");
HttpResponse response = SignUpActivity.httpclient.execute(httppost);

Log.d("response", "" + response);
HttpEntity entity = response.getEntity();

Log.d("entity", "" + entity);
is = entity.getContent();

Log.d("is", "" + is);

try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");

Log.d("sb", "" + sb);
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.d("result", result);
} catch (Exception e) {
Log.e("error3", "Error in http connection" + e.toString());
}

Log.e("response", "response is:" + response.toString());
} catch (Exception e) {
Log.e("error4", "Error in http connection" + e.toString());
}

try {
Log.d("JArray", "entered try");
JArray = new JSONArray(result);
feed_products_list = new ArrayList<Product>();
Log.d("JArray", "try last line");
} catch (JSONException e) {
Log.d("JArray", "in catch");
e.printStackTrace();
}

JSONObject jsonObj;
JSONObject jsonObjStore;
JSONObject jsonObjUser;

for (int i = 0; i < JArray.length(); i++) {
try {
Log.d("jsonObj",
"entered try" + " " + i + " " + JArray.length());
jsonObj = JArray.getJSONObject(i);
jsonObjUser = jsonObj.getJSONObject("user");
} catch (Exception e) {
Log.d("jsonObj", "in catch");
continue;
}

try {
Log.d("feed_products_list", "entered try");
Log.d("type of action", jsonObj.getString("action"));
if (jsonObj.getString("action").equals("entry")) {
Log.d("if block", "entered block 'entry'");

jsonObjStore = jsonObj.getJSONObject("store");
Log.d("store", jsonObjStore.getString("name"));

feed_products_list.add(new Product(jsonObj.getInt("id"),
jsonObj.getString("action"), jsonObj
.getString("image"), jsonObj
.getString("product_name"), jsonObj
.getString("reported_price_formated"),
jsonObjStore.getString("name"), jsonObjStore
.getString("area"), jsonObjStore
.getString("city"), jsonObj
.getString("mrp"), jsonObjUser
.getString("name"), jsonObj
.getLong("reported_timestamp"), jsonObj
.getInt("discount"), jsonObjStore
.getDouble("lat"), jsonObjStore
.getDouble("lng")));

Log.d("store id", jsonObjStore.getString("id"));
Log.d("feed_products_list product: ",
feed_products_list.get(i).lat + " "
+ feed_products_list.get(i).lng);

} else if (jsonObj.getString("action").equals("contest")) {
Log.d("if block", "entered block 'contest'");
feed_products_list.add(new Product(jsonObj.getInt("id"),
jsonObj.getString("action"), jsonObjUser
.getString("image"), jsonObj
.getString("product_name"), jsonObj
.getString("city"), jsonObjUser
.getString("name"), jsonObj
.getLong("reported_timestamp")));

Log.d("feed_products_list",
feed_products_list.get(i).productName);

}

} catch (JSONException e) {
e.printStackTrace();
}
}
m = 1;
}

我添加了这个:

                try {
is.close();
Intent intent = new Intent(FeedListViewActivity.this,
SearchActivity.class);
startActivity(intent);
Log.d("onClick", search_string);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

但是我得到了同样的错误

最佳答案

如果您关闭从 httpclient 获得的 InputStream,连接会自动关闭。检查您的代码并确保您正确关闭它们。

关于android - 在android中释放连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com