Transmitting Network Data Using Volley
다음의 코드를 보자. 일반적인 경우는 (2.5초 이내에 응답이 오는 경우) 문제가 없지만 서버와 통신이 지연되는 경우 안드로이드 앱이 다시 한번 서버 요청을 하게되는 것을 확인하게 될것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
private void memberJoin() {
String url = "http://test.com/data/member/join.jsp";
StringRequest stringRequest = new StringRequest(
Request.Method.POST,
url,
createMySuccessListener(),
createMyErrorListener()) {
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
eturn params;
}
};
queue.add(stringRequest);
}
public Response.Listener<String> createMySuccessListener() {
return new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
};
}
public Response.ErrorListener createMyErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
};
}
| cs |
이는 기본적으로 Volley 에서 서버에 요청을 보낼때는 기본정책이 적용되고 있는데 이때 응답 대기 타임아웃 값이 2500 마이크로초로 설정되어 있기 때문이다. 다음은 관련 Volley 자바 클래스이다.
- com.android.volley.toolbox.StringRequest
- com.android.volley.Request
- com.android.volley.DefaultRetryPolicy
2.5 초 이상의 응답 대기가 요구되는 경우는 아래와 같이 커스텀 정책을 생성하여 설정하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
private void memberJoin() {
String url = "http://test.com/data/member/join.jsp";
StringRequest stringRequest = new StringRequest(
Request.Method.POST,
url,
createMySuccessListener(),
createMyErrorListener()) {
protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
eturn params;
}
};
// 커스텀 정책을 생성하여 지정한다.
stringRequest.setRetryPolicy(new com.android.volley.DefaultRetryPolicy(
20000 ,
com.android.volley.DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
com.android.volley.DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(stringRequest);
}
| cs |
덕분에 3주동안 해결하지 못했던 문제를 해결했습니다. 감사합니다!
답글삭제감사합니다!!ㅠㅠㅠㅠ
답글삭제감사합니다. 원하던 해결책을 드디어 찾았네요.
답글삭제