2013-07-17 19 views
12

Obecnie jestem utrzymanie jednego statycznego żądania Volley kolejkę jak opisano tutaj:Ile kolejek zleceń Volley należy utrzymać?

Instantiating core Volley objects

private static RequestQueue mReqQueue; 

Powinny tam być jeden i tylko jeden wniosek statyczna kolejka za app? Jaka szkoda w posiadaniu więcej niż jednego? na przykład, co jeśli chciałbym jedną kolejkę żądań tylko do przetwarzania żądań twitter. I jeszcze jedna dla wszystkich innych, takich jak uwierzytelnianie, pobieranie obrazów itp.

Odpowiedz

11

Myślę, że Ficus Kirkpatrick powiedział gdzieś w his presentation on Volley, że optymalnie jest tylko jeden RequestQueue.

Jeśli większość twoich działań, usług i odbiorników korzysta z Volley, a ty wykonujesz wiele przełączeń między nimi, warto zdefiniować singleton RequestQueue w swoim obiekcie Application, aby nie było potrzeby tworzenia instancji nowy RequestQueue w każdej aktywności/usłudze/odbiorniku onCreate. Jeśli jednak masz dużo zajęć i użyjesz salwy w jednym z nich tylko na jedno żądanie, możesz lepiej zdefiniować RequestQueue tylko w tym, lub zostanie on utworzony w działaniach w z którego nie korzystasz. Nie powinno to zaszkodzić funkcjonalności, ale może zaszkodzić pamięci.


EDIT:

W grupie użytkowników siatkówki, Ficus powiedział:

RequestQueues są dość tanie (przeważnie właśnie wątków). Używamy więcej niż jednego w naszej aplikacji, aby segregować pamięci podręczne.

Który mówi nam, że jest to również ważny przypadek użycia, aby użyć wielu RequestQueues, jeśli potrzebujesz osobnych pamięci podręcznych.

+1

Co się jednak stanie, jeśli przełączysz się na inne działanie i chcesz wstrzymać żądanie w poprzedniej aktywności, najpierw załaduj nowe żądanie? – virsir

+1

Jest to naruszenie czynności, które powinno wykonać działanie. Jeśli chcesz móc anulować trwające pobieranie w ramach działań, pobierz plik w ['Service'] (http://developer.android.com/reference/android/app/Service.html). – Maarten

Powiązane problemy