【发布时间】:2014-05-29 07:24:58
【问题描述】:
我最近一直在使用 Picasso 作为图像加载器库。我将它与 Dagger 和 OkHtttp 结合使用。
我关于这个库的唯一问题是上下文的使用和通过构建器对库的实例化。
我不完全确定所需的上下文是什么(找不到有关它的文档)以及我们应该使用哪个上下文(ApplicationContext 或 ActivityContext?)以及为什么。
Jake Wharton 的 u2020 示例(顺便说一句很棒的示例应用程序可以看到所有这些组合),只有一个 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;
}
这是用作全局对象并且只实例化一次。我的问题是为什么不在 Activity 级别实例化一个新的 picasso 实例(使用相同的全局 OkHttpClient 配置 LRUCache 并且它是先前注入的)并将 Activity 作为上下文传递?我今天早上在 Github Picasso 的一个帖子中看到应该使用应用程序上下文,但没有提供更多细节。
因此,作为结论,我的问题是: - 使用的上下文是什么,我们应该使用哪一个。 - 为什么使用全局对象而不是活动级别实例。
谢谢!
【问题讨论】: