【问题标题】:Android: Where and how to store images in app?Android:在哪里以及如何在应用程序中存储图像?
【发布时间】:2016-11-16 23:07:48
【问题描述】:

我在存储头像时遇到问题。我的应用程序通过图像获取了用户的详细信息(图像在 byte[] 数组中)。如何将这些图像存储在我的应用程序中?我的意思是我应该将每个用户的图像保存在内部还是外部存储中?还是我应该及时使用这张图片并设置为ImageView?我的问题的最佳解决方案是什么?

感谢您的帮助:)

【问题讨论】:

  • 您可以将数据保存在 sharedpreferences 中。
  • 你已经尝试了什么,为什么没有成功?头像经常换吗?它只是关于一个用户的头像还是数百张图像?头像从哪里来?一个有多大?没有永远是最好的“最佳解决方案”,这在很大程度上取决于您要做什么。
  • 您可以加密到Base64并保存到数据类型为BLOB的数据库中。
  • 例如我的应用有 1k 个用户。每个用户都有一个头像。每个头像都存储在服务器中。我的应用程序通过图像获取每个用户的详细信息。还有一个问题。我应该如何处理每张图片? A)将每个图像保存在某个文件夹“头像”的内部/外部存储中,并在设置为带有图像路径的 ImageView 之后,或者 B)在我从服务器获取图像转换为位图并在 ImageView 中设置之后? o C) 给我建议:)
  • 如果您想与客户端同步数据,我认为您将数据保存在服务器中。如果您认为它不重要并且...您可以保存到外部。

标签: android image


【解决方案1】:

将图像存储在内部存储器中有利有弊。它还很大程度上取决于您的应用程序的业务逻辑。在android文档here中解释得很好。

内部存储

  1. 它总是可用的。

  2. 只有您的应用可以访问此处保存的文件。

  3. 当用户卸载您的应用时,系统会从内部存储中删除您应用的所有文件。

外部存储

  1. 它并不总是可用,因为用户可以将外部存储设备安装为 USB 存储设备,并在某些情况下将其从设备中移除。

  2. 它是世界可读的,因此保存在此处的文件可能会在您无法控制的情况下被读取。 当用户卸载您的应用程序时,只有您将应用程序的文件保存在 getExternalFilesDir() 的目录中时,系统才会从此处删除它们。

【讨论】:

    【解决方案2】:

    首先将字节数组转换为位图

    Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length);
    

    并将位图作为文件存储到外部存储中

    Convert Bitmap to File

    【讨论】:

    • 谢谢。但是如果我的应用程序使用了 100 万用户,那么它会占用我大量的存储空间吗?我说的对吗?
    • 是的,它会占用大量空间。大多数新应用程序从服务器下载内容,很少在本地存储信息。在您的情况下,您可以将用户最喜欢的联系人及其头像存储在设备上或缓存最新的。这取决于应用逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2018-01-25
    • 2023-03-14
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多