나는 발리 요청 대기열에 싱글 RequestQueue
을 사용합니다. 요청을 중단 한 나의 활동 중 onStop
에 취소 방법을 추가했습니다. 그러나 취소 된 요청을 재 시도를 위해 대기열에 추가하면 작동하지 않습니다.발리 재시동 취소 요청
내 활동 클래스 :
public class MainActivity extends Activity {
private int requestId;
protected Request previousRequest;
private RequestQueueSingleton requestQueueSingleton;
@Override
public void onStart() {
super.onStart();
if(previousRequest != null && previousRequest.isCancelled) {
requestQueueSingleton.add(previousRequest);
}
}
@Override
public void onStop() {
super.onStop();
requestQueueSingleton.cancelRequests(requestId);
}
}
요청 싱글 : 모든 것이 적절하게 작동하는지
public class RequestQueueSingleton {
private static RequestQueueSingleton instance;
private RequestQueue requestQueue;
public static RequestQueueSingleton getInstance(Context context) {
if (instance == null) {
instance = new RequestQueueSingleton(context);
}
return instance;
}
private RequestQueueSingleton(Context context) {
if (requestQueue == null) {
requestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
}
public void addToQueue(Request request) {
requestQueue.add(request);
}
public void cancelRequests(int tag) {
requestQueue.cancelAll(tag);
}
}
주, 어떤 충돌이 발생하지 여기에 코드입니다. 앱이 백그라운드로 돌아가서 응답이 돌아 오면 응답이 전달되지 않습니다. 제가 빠진 것이 있습니까?
미리 감사드립니다.
당신은 어떻게'RequestQueueSingleton' 싱글을 만들고있다? 일반적으로, 나는 싱글 톤을'정적 '으로 만든다. 나는'정적 인'싱글 톤을 본 적이 없다. –
이것은 실제로 활동 클래스입니다. 나는 다른 클래스에 싱글 톤을 가지고있다. –
예, 충분합니다. 왜냐하면 나에 따르면 변수는이 코드 부분을 관찰함으로써 싱글 톤이 아니기 때문입니다. 그리고 주된 문제는 non-singleton 변수 때문일 것입니다. –