Я играл в последнее время с Picasso в качестве библиотеки загрузчика изображений. Я использую его совместно с Dagger и OkHtttp.
Мои вопросы, касающиеся этой библиотеки, - это использование контекста и создание библиотеки через конструктор.
Я не совсем уверен, что это за контекст (не могу найти документацию об этом), а также какой контекст мы должны использовать (ApplicationContext или ActivityContext?) и почему.
Глядя на примеры (отличное приложение для примера, чтобы увидеть все это в сочетании) u2020 от Jake Wharton, только один экземпляр Picasso создан с использованием контекста приложения. Что-то вроде этого:
@Provides
@Singleton
Picasso providePicasso(@ApplicationContext Context context, OkHttpClient client) {
Picasso picasso = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(client))
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception e) {
Log.e("Picasso", "Failed to load image:" + uri);
}
})
.build();
return picasso;
}
Это используется как глобальный объект и создается только один раз. Мой вопрос заключается в том, почему бы не создать экземпляр нового экземпляра picasso на уровне Activity (с тем же глобальным OkHttpClient, который настраивает LRUCache, и он вводится ранее) и передавая активность как контекст? Я читал сегодня утром в потоке Гитуба Пикассо, что нужно использовать контекст приложения, но больше не рассказывал об этом.
Итак, мой вывод: - Каков контекст, используемый и который мы должны использовать. - Зачем использовать глобальный объект, а не экземпляр уровня активности.
Спасибо!