场景
我制作了一个向用户显示预定义产品列表的应用程序。每个产品都有与之关联的图像。
最初,我使用ImageLoader来在应用程序上显示图像,该实用程序使用图像URL。但这会占用很多用户的移动数据。
为了最大限度地减少用户的移动数据使用量,我计划在安装应用程序时将图像保存在用户设备上,偶尔将新项目添加到列表中时(每月一次)保存图像。
问题
安装该应用程序后,或者如果它们是某些图像项目的更新,最好直接将图像下载并保存在缓存中或作为设备存储中的隐藏文件夹保存?
在我的研究中,我意识到
在缓存中 :较少观看的图像/对象从缓存中逐出。
(我在代码中进行了检查,以查看要显示的图像是否仍在存储中,否则将导致再次下载该图像。这是我不想要的)
在设备存储区 :在设备上隐藏文件夹和图像可能不道德。
(隐藏“图像和文件夹”的原因是因为我不希望用户在其Galley中查看图像或误删除文件夹)
我的目标
询问您对上述情况的最佳解决方案的意见。 天气将图像保存在缓存,设备存储或其他方法中。
我的目标
如何最大限度地减少用户的移动数据使用量。
答案 0 :(得分:0)
您可以使用Glide
或Picasso
可用的第三方库来减少加载时间,一旦加载,它将缓存图像并显示下一次缓存。
下面是要使用的代码
在您的 app.gradle
中添加以下内容compile 'com.squareup.picasso:picasso:2.5.2'
从URL加载图像到Imageview的源
Picasso.get()
.load("your image url")
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.fit()
.into(imageView)
答案 1 :(得分:0)
如果产品图像不经常更新,则可以将图像保存在内存中。
您可以使用应用程序的私人文件夹,该文件夹不会与其他应用程序共享,并且您保存的图像不会显示在图库中。
该文件夹位于data / data / yourPackageName内
您可以通过以下行获取文件夹的路径:- getApplicationInfo()。dataDir
ImageLoader正在使用高速缓存存储器将图像临时保存到设备中,因此,如果图像存在于高速缓存中,它将不会再次下载,而是会从高速缓存中获取。
这完全取决于您,如果您将图像保存在物理存储中,并且图像过多,并且管理不佳,那么您的应用程序可能会占用设备的大量内存。
希望它会对您有所帮助。