2013-04-26 1 views
0

현재 4.0 앱을 2.1 Android 기기와 호환 가능하게하려고합니다. HttpResponse를 호출 할 때 예외가 발생했는데 이유를 모르겠습니다. 내가 아는 전부는 API 8의 경우 오류를 피하기 위해 주석을 달고 두 개 이상의 조정할 수있는 행이 두 개 있으며 갈 수 있다는 점입니다. 이 줄이 무엇인지 또는 문제의 원인인지 (내가 튜토리얼에서 코드 조각을 수정 한 이래로) 코드가 작동 중입니다. 다음은 주석 처리 된 줄입니다.다른 동작 디버그 대 릴리스 모드 android - release mode freezes

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

그러나 디버그 모드입니다. 내가 릴리스 모드를 시도해 본 후에는 앱이 얼어 붙은 같은 장소에 도착합니다 ... 토스트 메시지를 디버깅 메시지로 배치하여 릴리스 모드를 확인했지만 디스플레이하지 않습니다 (어쨌든 progressDialog가 있기 때문에).

주된 문제는 디버그 모드에서 (이제 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"; 
    } 


} 

}

감사

+0

StrictMode는 이전 API 레벨 9에서 작동하지 않습니다. Android 2.1은 API 7입니다. – marimaf

+0

고맙습니다. – marimaf

답변

1

는 HttpResponse에 전화 할 때 활동의 메인 스레드를 방해하지 않습니다 안드로이드 4.0 때문에 위의 당신은 AsyncTask를 사용해야합니다.

+0

이것은 내 문제를 해결하지 못합니다. 나는 전에 그것을 시도하고 지금 그것을 재 시도하고 아무 일도 일어나지 않았다. – marimaf

+1

http 호출 만 래핑하는 대신 AsyncTask에 send()를 래핑 해 보았는가? –

+0

예, 정확히 그랬습니다. – marimaf

관련 문제