2016-08-28 5 views
0

사용하여 안드로이드 앱 오류 로그를 이해 할 수 없습니다누군가가 이러한 오류 로그 항목에 대해 나에게 자세히 설명해 수 AsyncTask를

W/System.err(8537):  at com.any.sales.Alerts.toast(Alerts.java:14) 
W/System.err(8537):  at com.any.sales.SalesHandler.startStalesSync(SalesHandler.java:31) 
W/System.err(8537):  at com.any.sales.Start.act(Start.java:55) 
W/System.err(8537):  at com.any.sales.Start.onCreate(Start.java:23) 
W/System.err(8537):  at com.any.sales.Alerts.toast(Alerts.java:14) 
W/System.err(8537):  at com.any.sales.HttpCall.onPostExecute(HttpCall.java:103) 
W/System.err(8537):  at com.any.sales.HttpCall.onPostExecute(HttpCall.java:22) 

내 애플 충돌 및 ADB 로그이 제외한 다른 오류 로그를 표시되지 않습니다에 유지합니다. 그리고 나는이 글들이 무엇을 말하려고하는지 이해할 수 없다.

저는 HttpPost, HttpClient, HttpResponse와 같은 Http 클래스가 온라인 서버에 연결하고 데이터를 가져 오는 앱을 만들고 있습니다. 이 목적을 위해 HttpCall 클래스를 만들고 AsyncTask를 확장합니다. 나는이 클래스를 잠시 사용하고 있으며, 모든 프로젝트에서 완벽하게 작동하고 있지만 이제는 어떻게 든 제대로 작동하지 않습니다.

예외에 대한 printStackTrace를 수행하고 있으며 오류 로그 항목을 모두 봅니다. 이 항목이 무엇을 말하려고하는지 이해할 수 있다면 문제를 바로 잡을 수 있습니다. 보시다시피 함수 이름, 클래스 이름 행 번호 만 참조 할 뿐이며 오류가 실제로 무엇인지 알려주는 다른 메시지는 없습니다. 이것은 내 HttpCall 클래스입니다 :

public class HttpCall extends AsyncTask<Void, Void, String> { 
String url; 
List<NameValuePair> params; 
AsyncResponse delegate = null; 

public HttpCall(String url, List<NameValuePair> params, AsyncResponse responseDelegate) { 
    this.url = url; 
    this.params = params; 
    this.delegate = responseDelegate; 
} 

private String post(String url, List<NameValuePair> params) { 
    // Data Objects 
    UrlEncodedFormEntity entity; 
    HttpPost post; 
    HttpClient client; 
    HttpResponse response; 
    BufferedReader reader; 
    StringBuilder builder; 
    String line; 

    try { 
     // Set Parameters 
     entity = new UrlEncodedFormEntity(params); 

     // Set Request 
     post = new HttpPost(url); 
     post.setEntity(entity); 

     // Execute Request through Http Client and Store the response 
     client = new DefaultHttpClient(); 
     response = client.execute(post); 

     // Read Response to the buffer 
     reader = new BufferedReader(
       new InputStreamReader(
         response.getEntity().getContent() 
       ) 
     ); 
     builder = new StringBuilder(""); 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
     } 
     reader.close(); 
     return builder.toString(); 
    } catch (ConnectTimeoutException ex) { 
     ex.printStackTrace(); 
     return "Unable to process request" 
       + "\nDue to a very slow or no active Internet" 
       + "\nPlease try again in few seconds.."; 
    } catch (NoHttpResponseException ex) { 
     ex.printStackTrace(); 
     return "No Response from Server. Please try again in few seconds.."; 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return "Error in IO"; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     return "Unknown Connection Error"; 
    } 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
} 

@Override 
protected String doInBackground(Void... voids) { 
    try { 
     return post(this.url, this.params); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     return ex.getMessage(); 
    } 
} 

@Override 
protected void onPostExecute(String result) { 
    try { 
     super.onPostExecute(result); 
     if (delegate != null) 
      delegate.onFinish(result); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     Alerts.toast(ex.getMessage()); 
    } 
} 
} 

이 AsyncTask를

내 문제를 해결
public interface AsyncResponse { 
void onFinish(String output); 
} 

답변

0

의 onPostExecute에서 실행하는 내 AsyncResponse 클래스입니다. 웃기는 일은 Http 나 Async와는 관련이 없습니다. 이번에는 Toast.makeText을 사용하지 않고 새로운 Toast()를 사용하여 토스트를 호출했지만 예외가 발생했습니다.

이상한 것은 printStackTrace이 (가) 표시되지 않습니다.