ANDROID - 活动改变时连接不停留

时间:2013-01-14 14:48:54

标签: android url http-get

我正在开发一个登录tomcat服务器的应用程序。 我正在使用HTTP GET请求这样做,并且在成功连接后, 消息通过缓冲流显示。

以下代码用于连接。

public String getInternetData() throws Exception {


BufferedReader in = null;
String data = null;

try {
    HttpClient client = new DefaultHttpClient();
    client.getConnectionManager().getSchemeRegistry().register(getMockedScheme());
    URI website = new URI("https://ts.rks.com:8443/kss/login?username=hydm&password=pw1234"); 
    HttpGet request = new HttpGet();
    request.setURI(website);
    HttpResponse response = client.execute(request);
    response.getStatusLine().getStatusCode();

    in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    StringBuffer sb = new StringBuffer("");
    String l = "";
    String nl = System.getProperty("line.separator");
    while ((l = in.readLine()) != null) {
        sb.append(l + nl);
    }
    in.close();
    data = sb.toString();
    return data;
} finally {
    if (in != null) {
        try {
            in.close();
            return data;
        } catch (Exception e) {
            Log.e("GetMethodLogin", e.getMessage());
        }
    }
}

这是用户通过登录活动登录时激活的代码。 当我返回菜单屏幕并尝试运行另一个需要用户的活动时 要登录,它表示用户尚未登录。

当用户离开活动或我没有正确建立连接时,连接是否断开连接。

2 个答案:

答案 0 :(得分:0)

当活动移至后台时,连接将不会保留。我无法从您发布的代码中判断出来,但我相信您应该使用AsyncTask进行此连接。这来自我从链接中提取HTML源代码的经验。

这个问题可能会回答你的问题:What to do with AsyncTask in onPause()?

答案 1 :(得分:0)

实际上有两件事需要改变,而不仅仅是一件。

您需要在活动中保持持久性的任何内容都应该在服务中完成,而不是在活动的代码中完成。

其次,在最近的Android版本中,所有网络都必须从后台线程完成,而不是UI线程(总是有针对UI线程网络的建议,但现在它会触发异常)。将代码放在服务中并不意味着它在另一个线程中。

所以答案是你应该使用其中一种后台线程机制,并在服务中执行此操作。