2014-02-28 4 views
5

I .add( 제안한대로 싱글 톤으로 생성 한 내 발리 요청 대기열에 대한 새 네트워크 호출. 그러나 나는 항상 즉시 .start() 이러한 네트워크를 호출합니다. 이것은 항상 활동 또는 단편에서 활동으로 수행됩니다.발리 네트워크 요청 대기열은 어떻게 사용합니까?

add 방법도 .add(new volley request).start()

그래서, 나는 실제 관리 (또는 관리하고자하는) 발리는 큐를 처리하는 방식의 외부 어딘가에 네트워크 큐를하고 가정처럼 start 방법으로 체인 수 없습니다 I 추측. 이러한 것들을 IntentService에 보내고 IntentService가 응답을 내 Fragment/Activity로 수신하는 것을 듣고 있어야합니까?

답변

7

발리 이용자로서 .start() 메소드를 호출 한 적이 없다고 말할 수 있습니다. 대기열에 추가 한 모든 요청은 자동으로 시작되었고, 내가 한 것처럼 싱글 톤 클래스를 사용했습니다.이 정보를 확인하려면 tutorial을 확인하십시오 (Google에서 제공하지 않은 정보).

+0

흥미롭게도,'queue'는'start'입니다. 그 이유는 내 중단 점의 일부가 두 번 onResponse 트리거됩니다. – CQM

+0

아마도 .start()를 사용하지 않고 모든 것이 잘되는지 보면서 언젠가 Google이 전체 API 문서를 제공 할 수 있기를 바랍니다. 그것은 훌륭하게 작동하지만 스스로 모든 것을 조사 할 필요가 있습니다. –

+0

사실 GSON과 Oauth2를 효과적으로 사용하기 위해 모든 네트워크 방법을 확장했습니다. – CQM

8

당신이 만드는 경우 requestQueue로 : 당신이 start() 필요하지 않습니다

requestQueue = Volley.newRequestQueue(mAppContext); 

.

Volley.RequestQueue의 문서에 따르면 : "작업자 풀의 기본 인스턴스를 만들고 그것에 RequestQueue.start()을 호출합니다."

따라서 start() 번으로 전화 할 필요가없는 이유를 알 수 있습니다. 그러나

,합니다 (official reference 참조)이 같은 requestQueue를 작성하는 경우는 :

RequestQueue mRequestQueue; 

// Instantiate the cache 
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap 

// Set up the network to use HttpURLConnection as the HTTP client. 
Network network = new BasicNetwork(new HurlStack()); 

// Instantiate the RequestQueue with the cache and network. 
mRequestQueue = new RequestQueue(cache, network); 

// Start the queue 
mRequestQueue.start(); 

start() 호출해야합니다.

추신 : 소스 코드 자체에서 제공하는대로 설명서를 제공합니다. IDE는 쉽게 추출 할 수 있습니다. 나는 필요한 문서의 메소드/클래스 이름 위에 마우스를 올려 놓고 android-studio에서 CTRL을 누릅니다.