gpt4 book ai didi

android - picasso :如何检查单例是否已经设置

转载 作者:行者123 更新时间:2023-11-29 15:47:29 25 4
gpt4 key购买 nike

我正在使用 Picasso 在我的应用程序中处理图像加载。在我的 Activity 中我做

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.loading_screen);
setupPicasso();
// ...
}

private void setupPicasso()
{
Cache diskCache = new Cache(getDir(CacheConstants.DISK_CACHE_DIRECTORY, Context.MODE_PRIVATE), CacheConstants.DISK_CACHE_SIZE);
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setCache(diskCache);

Picasso picasso = new Picasso.Builder(this)
.memoryCache(new LruCache(CacheConstants.MEMORY_CACHE_SIZE))
.downloader(new OkHttpDownloader(okHttpClient))
.build();

picasso.setIndicatorsEnabled(true); // For debugging

Picasso.setSingletonInstance(picasso);
}

这在首次启动应用程序和通过按主页按钮暂停应用程序时工作正常。但是,当按下后退按钮关闭应用程序,然后重新打开应用程序时,出现以下错误:

java.lang.IllegalStateException: Singleton instance already exists.

发生这种情况是因为 Picasso 不允许重置全局单例实例。解决此问题的最佳方法是什么?是否可以检查单例是否已经设置?或者我是否需要在我的 Activity 中保留一个成员变量并检查它是否为 null?对此的任何最佳实践表示赞赏。

最佳答案

请调用您的 setupPicasso()方法来自 onCreate在你自己的Application类(class)。扩展 Application 类并覆盖 onCreate .然后你需要添加 name属性到您的 list 的 <application>包含完全合格的应用程序类的部分。

package my.package

public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();
setupPicasso();
}

然后在你的 list 中,

<application 
android:name="my.package.MyApplication"
... >

关于android - picasso :如何检查单例是否已经设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32288546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com