Мой опыт работы с Volley заключается в том, что я инициировал RequestQueue внутри класса Application, передавая ему глобальный контекст в приложение. Я не вижу недостатка в этом, просто создайте статическую ссылку на RequestQueue как таковую:
public class MyApplication extends Application
{
private static RequestQueue mRequestQueue;
@Override
public void onCreate() {
super.onCreate();
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}
// Getter for RequestQueue or just make it public
}
В документации, как вы можете для класса Application, он цитирует:
Вызывается при запуске приложения до того, как будут созданы какие-либо действия, службы или объекты получателя (за исключением поставщиков контента). Реализации должны быть максимально быстрыми (например, с использованием ленивой инициализации состояния), поскольку время, затраченное на эту функцию, напрямую влияет на производительность запуска первой активности, службы или получателя в процессе. Если вы переопределяете этот метод, обязательно вызовите super.onCreate().
Поэтому можно с уверенностью предположить, что наша RequestQueue будет доступна для отправки запросов в службу, активность, загрузчик и т. д.
Теперь, что касается ImageLoader, я бы сделал одноэлементный класс, обертывающий некоторые функции, чтобы у вас был только один экземпляр ImageCache и один ImageLoader, Ex.
public class ImageLoaderHelper
{
private static ImageLoaderHelper mInstance = null;
private final ImageLoader mImageLoader;
private final ImageCache mImageCache;
public static ImageLoaderHelper getInstance() {
if(mInstance == null)
mInstance = new ImageLoaderHelper();
return mInstance;
}
private ImageLoaderHelper() {
mImageCache = new MyCustomImageCache();
mImageLoader = new ImageLoader(MyApplication.getVolleyQueue(),mImageCache);
}
// Now you can do what ever you want with your ImageCache and ImageLoader
}
Если вам нужен действительно хороший пример загрузки изображений с помощью volley, посмотрите этот образец проекта, он действительно полезен.
Надеюсь это поможет.
27.06.2013