Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用毕加索保存图像,以便无需加载时间?_Java_Android_Performance_Picasso - Fatal编程技术网

Java 如何使用毕加索保存图像,以便无需加载时间?

Java 如何使用毕加索保存图像,以便无需加载时间?,java,android,performance,picasso,Java,Android,Performance,Picasso,我有一个应用程序,其中我显示一个报价,并有一张图片在背景中。当我点击“下一步”按钮时,将显示下一个报价,并加载新图像。加载大约需要0.5秒,并将之前的图像作为占位符。但当我切换回来时,没有加载时间 这意味着,图像保存在某个位置,因此无需再次加载。不幸的是,这只是暂时的。当我看到接下来的5张图片并返回到第一张时,第一张图片需要再次加载。因此,我尝试在开始时加载所有图片(只有25张图片),如下所示: Picasso.get().load(backgrounds.get(1)); Picasso.ge

我有一个应用程序,其中我显示一个报价,并有一张图片在背景中。当我点击“下一步”按钮时,将显示下一个报价,并加载新图像。加载大约需要0.5秒,并将之前的图像作为占位符。但当我切换回来时,没有加载时间

这意味着,图像保存在某个位置,因此无需再次加载。不幸的是,这只是暂时的。当我看到接下来的5张图片并返回到第一张时,第一张图片需要再次加载。因此,我尝试在开始时加载所有图片(只有25张图片),如下所示:

Picasso.get().load(backgrounds.get(1));
Picasso.get().load(backgrounds.get(2));
Picasso.get().load(backgrounds.get(3));
Picasso.get().load(backgrounds.get(4));
Picasso.get().load(backgrounds.get(5));
Picasso.get().load(backgrounds.get(6));
Picasso.get().load(backgrounds.get(7));
当我点击我的“下一步”按钮时,我使用这个:

Picasso.get().load(backgrounds.get(counterBackground)).fit().noPlaceholder().into(background);
但这两件事都没有预期的效果。图像每次需要0.5左右的加载时间,“noPlaceholder”不能像预期的那样工作,占位符仍然存在

那么,有人知道如何缩短装载时间吗?比如,如何在开始时加载所有图像


谢谢你的回答

您可以在使用毕加索时创建缓存,这将导致更快的加载时间(只要图像被缓存)

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);

您可以使用指示器查看图像的加载位置

setIndicatorsEnabled(true)

您还可以使用回调来指示映像何时完成加载

你可以看到更多的细节

编辑

  • 你可以用
    Picasso.get().load(R.drawable.pic).into(imageview)
    我认为它也适用于mipmap,通常mipmap用于资源的错误/占位符(如果您不使用drawables)

  • 2. 您可以创建自己关于如何缓存/加载图像的策略


    谢谢!你能评论一下你的代码吗?比如,“250000000”是什么意思CacheDir之后是什么意思?你可以在我提供的链接中看到。这基本上意味着你为cachingI分配了250mb。我检查了你的链接和答案。不幸的是,我不知道如何处理本地文件。我的图像都在我的项目中。你能帮我吗?你是指本地文件还是资源?我从未尝试使用毕加索加载ResourcesResources,其保存在mipmap文件夹中