不同的行为调试与发布模式android - 释放模式冻结

时间:2013-04-26 19:12:54

标签: android

我正在尝试使当前的4.0应用程序与2.1 Android设备兼容。 我曾经在调用HttpResponse时遇到异常,但我不知道为什么。 我所知道的是,对于API 8,我需要注释掉2行,以避免错误并结合更多调整,我很乐意去。我不完全确定这些行是做什么的,或者它们是否是问题的原因(因为我刚刚修改了一些教程中的代码片段)但是代码现在正在工作....这些是我注释掉的行:

 /*StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
   StrictMode.setThreadPolicy(policy);
   */

但是在调试模式下。一旦我尝试了发布模式,我就到了应用程序之前冻结的相同位置...我将一些Toast消息作为调试消息来检查发布模式但是它们没有显示(可能因为我正在进行progressDialog)。 / p>

主要问题是在调试模式下它现在工作正常(在2个不同的设备中测试),但是发布模式一直存在问题(我甚至无法调试它)。

以下是我认为我的应用失败的代码。在调试模式下,它在调用HttpResponse时失败。有什么想法吗?

public String Send(String jsonString, String url, Context ctxt)
{
    try{

        System.out.println(jsonString);

        HttpPost request = new HttpPost(url);
        request.setHeader("Accept", "text/xml");
        request.setHeader("Host", "www.my-host.com" );
        request.setHeader("Content-type", "application/json");
        StringEntity stringEnt = new StringEntity(jsonString); 
        stringEnt.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        request.setEntity(stringEnt);

        //instantiates httpclient to make request
        DefaultHttpClient httpclient = new DefaultHttpClient();

        HttpResponse response = httpclient.execute(request);
        HttpEntity responseEntity = response.getEntity();       

        //Obtenemos el xml de la respuesta
        String responseXML = EntityUtils.toString(responseEntity);
        return responseXML;
    }
    catch(Exception e)
    {
        Toast.makeText(ctxt, "Error registering user", Toast.LENGTH_SHORT).show();
        Log.i("login", "" + e.getMessage());
        return "error";
    }


}

}

感谢

1 个答案:

答案 0 :(得分:1)

当您调用HttpResponse时应该使用Asynctask,因为Android 4.0及更高版本不会让您中断活动的主线程。