내가 만든 웹 서비스의 데이터 형식을 얻으려면 AsyncTask
을 사용하고 있습니다. 이제는 인터넷에 접속할 수 없다면 사용자에게 적절한 오류 메시지를 표시하고 싶습니다. 서버가 다운되면 토스트가 표시됩니다. doInBackground()에서 "server is down"또는 "internet problem occured"와 같은 오류가있는 문자열을 설정하고 onPostExecute()에서 토스트를 표시하려고하지만 내 서버가 다운 된 경우 어떤 예외가 발생했는지 알고 싶습니다. 내 서버가 활성화되었지만 전송 중에 인터넷 연결이 끊어지면 어떤 예외가 발생합니까?Android에서 AsyncTask의 오류 메시지를 사용자에게 표시하는 방법은 무엇입니까?
2
A
답변
0
아마 응답을 모델링하는 것이 가장 쉽고 쉬운 방법입니다. 그런 다음
class ApiResponse {
public final String responseString;
public final Throwable error;
public ApiResponse (String responseString,Throwable error){
this.responseString = responseString;
this.error = error;
}
}
, 해당 모델에 따라 또는 오류를 바인딩하고 doInBackground();
에서 반환 할 수 있습니다 당신은 데이터로부터 모델을 구성 할 수
예를 들어
, 당신은 같은 있어요 의사 코드 :class ApiAsyncTask extends AsyncTask<Void, Void, ApiResponse> {
....
protected ApiResponse doInBackground() {
try {
//callApi and get response, if success pass null in error
return new ApiResponse(responseString, null)
} catch (Exception e) {
e.printStackTrace();
//otherwise pass that error
return new ApiResponse(null, e);
}
}
protected void onPostExecute(ApiResponse apiResponse) {
//now just need to check if error is null
if (error == null) {
String json = apiResponse.responseString;
//parse response
} else {
//get error and check with instanceOf
Throwable error = apiResponse.error;
if (error instanceOf SocketTimeoutException){
//show timeout error
}
else if (error instanceOf SomeXYZException){
//handle that exception
}
}
}
}
이것은 단지 시험입니다. ple. ApiResponse
에 원하는 것을 넣고 해당 데이터의 모델을 작성할 수 있습니다. (예 : 상태 코드가 API에서 가져온 것, 일부 변환기 등에서 json 응답의 pojo 클래스 생성). 바운드 된 데이터를 얻은 후에는 항상 UI 스레드에서 실행되므로 onPostExecute()
에서 사용할 수 있습니다. 세 번째 유형 매개 변수 Result
이 AsyncTask
인 것은 정의에 따라 구성됩니다. AsyncTask<Params, Progress, Result>
. 당신의 doInBackground()
문자열과 이상의
0
캐치 예외는, 당신은 당신이 onPostExecute()
방법에서 토스트 메시지를 표시 할 수 있습니다,이 같은 필요한 따라 달라집니다 :이 예 YUST이다, 물론
@Override
protected Void doInBackground(Void... arg0) {
try {
// do you stuff here
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
response = "UnknownHostException: " + e.toString();
} catch (IOException e) {
e.printStackTrace();
response = "IOException: " + e.toString();
} finally {
...
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void onPostExecute(Void result) {
if (response.contains("IOException: java.net.ConnectException:")) {
Toast.makeText(getApplicationContext(), "YOUR TEXT HERE", Toast.LENGTH_SHORT).show();
mProgressDialog.dismiss();
}
else if (response.contains("IOException: java.net.SocketTimeoutException:")) {
Toast.makeText(getApplicationContext(), "YOUR TEXT HERE", Toast.LENGTH_SHORT).show();
mProgressDialog.dismiss();
}
else if (response.contains("IOException: java.net.SocketException:")) {
Toast.makeText(getApplicationContext(), "YOUR TEXT HERE", Toast.LENGTH_SHORT).show();
mProgressDialog.dismiss();
}
}
을하지만, 어떻게 효과가 있는지 알 수 있습니다.
관련 문제
- 1. PHP에서 사용자에게 오류/메시지를 표시하는 좋은 방법은 무엇입니까?
- 2. android에서 asyncTask의 onPostExecute() 창 만들기
- 3. Android에서 AsyncTask의 공통 클래스는 무엇입니까?
- 4. 사용자에게 로깅하면서 오류를 표시하는 방법은 무엇입니까?
- 5. Windows에서 오류 메시지를 강제로 표시하는 방법은 무엇입니까?
- 6. Spring Validator에서 오류 메시지를 표시하는 방법은 무엇입니까?
- 7. 오류 메시지를 툴팁으로 표시하는 방법은 무엇입니까?
- 8. Liferay 포털에 오류 메시지를 표시하는 방법은 무엇입니까?
- 9. Trigger.io 촉매에 오류 메시지를 표시하는 방법은 무엇입니까?
- 10. webmethod에서 메시지를 표시하는 방법은 무엇입니까?
- 11. Android에서 Facebook에 메시지를 표시하는 방법
- 12. 도움말 메시지가있는 부동 메시지를 사용자에게 표시하는 방법
- 13. 웹 서비스 예외를 사용자에게 표시하는 방법은 무엇입니까?
- 14. AsyncTask의 활동 알림
- 15. 올바른 메시지를 표시하는 방법은 무엇입니까?
- 16. 추천 방법 사용자에게 메시지를 표시하는 방법
- 17. 사용자에게 세션 만료 메시지를 표시하는 방법
- 18. Android에서 진행률 대화 상자를 표시하는 방법은 무엇입니까?
- 19. 상단의 크롬 확장에 메시지를 표시하는 방법은 무엇입니까?
- 20. 여러 사용자에게 메시지를 보내는 방법은 무엇입니까?
- 21. 새 메시지를 사용자에게 알리는 방법은 무엇입니까?
- 22. 무한 루프로 메시지를 계속 표시하는 방법은 무엇입니까?
- 23. 그놈 패널에 상태 메시지를 표시하는 방법은 무엇입니까?
- 24. android에서 앱 사용자에게 알림을 보내는 방법은 무엇입니까?
- 25. MVC에 유효성 검사 메시지를 표시하는 방법은 무엇입니까?
- 26. Java 애플릿로드 실패시 메시지를 표시하는 방법은 무엇입니까?
- 27. Android에서 회 전자를 회색으로 표시하는 방법은 무엇입니까?
- 28. Android에서 이미지를 표시하는 가장 좋은 방법은 무엇입니까?
- 29. Subversion이 나에게이 오류 메시지를 표시하는 이유는 무엇입니까?
- 30. Tapestry5에 확인 메시지를 표시하는 방법은 무엇입니까?
예 물론 모든 예외를 잡아야합니다. – greenapps
doInBackground()에서는 Toast()를 사용할 수 없습니다. onPostExecute()에서 그렇게하십시오. – greenapps
예 doInBackground()에서 문자열 오류를 설정하고 onPostExecute()에서 토스트를 표시하지만 내 서버가 다운 된 경우 예외가 발생했는지 알고 싶습니다. 내 서버가 활성화되었지만 전송 중에 인터넷 연결이 끊어지면 어떤 예외가 발생합니까? –