【问题标题】:Which is more efficient saving Files in cache or in device memory? Android将文件保存在缓存中或设备内存中哪个更有效?安卓
【发布时间】:2019-01-24 06:47:00
【问题描述】:

场景

我制作了一个应用程序,它向用户显示预定义产品的列表。每个产品都有与之关联的图像。

最初为了在应用程序上显示图像,我使用了 ImageLoader,它使用了图像 URL。但它占用了大量用户的移动数据。

为了最大程度地减少用户移动数据的使用,我计划在安装应用时将图像保存在用户设备上,并且偶尔(每月一次)将新项目添加到列表中。

问题

当应用程序安装或更新某些图像项目时,最好将图像直接下载并保存在缓存中还是作为设备存储中的隐藏文件夹?

在我的研究中,我意识到

在缓存中:较少查看的图像/对象被从缓存中逐出。

(我检查了我的代码以查看要显示的图像是否仍在存储中,如果没有,它将导致再次下载图像。我不想要)

在设备存储中:在设备上隐藏文件夹和图像可能不道德。

(隐藏图像和文件夹的原因是我不希望用户查看他们的厨房中的图像或错误地删除文件夹)

我的目标

就上述情况的最佳解决方案征求您的意见。 将图像保存在缓存、设备存储或其他方法中的天气。

我的目标

如何最大限度地减少用户的移动数据使用量。

【问题讨论】:

  • 使用 Picasso / Glide / Volley - 我几乎可以肯定他们都有内置的缓存支持
  • 不清楚您认为什么是缓存。

标签: android caching storage device


【解决方案1】:

您可以使用GlidePicasso 可用的第三方库,这将减少加载时间,一旦加载,它将缓存图像并显示缓存以供下次使用。

下面是使用代码

在您的 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)

【讨论】:

    【解决方案2】:

    如果产品图片不经常更新,可以将图片保存在内存中。

    您可以使用您的应用程序的私有文件夹,该文件夹不被其他应用程序共享,您保存的图像不会显示在图库中。

    文件夹在 data/data/yourPackageName 里面

    您可以通过以下行获取文件夹的路径:- getApplicationInfo().dataDir

    ImageLoader 正在使用缓存将图像临时保存到您的设备中,因此如果图像存在于缓存中,它将不会再次下载,而是从缓存中获取。

    这完全取决于您,如果您将图像保存在物理存储中,并且图像过多并且您管理不善,那么您的应用程序可能会占用设备的大量内存。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多