【问题标题】:External vs Internal memory storage . What shall i use?外部与内部存储器存储。我该用什么?
【发布时间】:2012-02-07 14:44:35
【问题描述】:

我使用LazyList 版本来加载图像。它使用外部存储,什么都不错。但为了不向手头有文件浏览器的每个人显示这些文件,我考虑改用内部内存,最大内存量为 (5mB)。

我该怎么办?还有其他可能性吗?

【问题讨论】:

    标签: android memory-management lazylist


    【解决方案1】:

    AFAIK 每个应用程序的内部内存没有限制。但是,如果用户在设备上有很多应用程序,那么这个内存通常会很低,所以你不应该将它用于大(或大量)文件。

    我会使用外部存储器(sd 卡)并且如果对图像的原始访问存在问题,那么我会:

    1. 加密文件。这很重,会减慢速度。
    2. 加扰文件。这涉及在字节周围移动,例如将前 1000 个字节移动到文件末尾,等等。您可以创建自己的 InputStream 版本来进行字节洗牌,并将其传递给 BitmapFactory.decodeStream(..)

    【讨论】:

    • 我不需要一个非常安全的空间,但你很高兴我知道内部存储器不适合很多/大文件。 +1 完整答案。
    • @Peter Knego:您能否评论一下这个线程,它说每个应用程序的内存限制范围在 16 到 48 MB 之间,如 Android 代码所示:stackoverflow.com/questions/8815974/…;谢谢!
    • @WinOrWin 显然您所指的线程是在谈论“内存”,RAM,而该线程谈论的是“存储空间”(尽管人们可能将其称为“内部/外部内存”) .它们不是同一件事。 (例如,硬盘空间和内存之间的基本区别)。
    【解决方案2】:

    内部存储器应该用于您不希望任何人篡改的小事情。其他应用程序和用户可以访问外部存储器(通常是 SD 卡)。 附带说明一下,内存是“昂贵的”,用户倾向于卸载占用大量内存的应用程序。

    使用外部存储器,只需确保您检查它是否确实可用。 SD 卡可能丢失、弹出、安装甚至不存在(并非所有 Android 设备都有)。

    访问速度各不相同。我知道一些三星设备的外部存储速度相当慢,而它们的内部存储速度非常快。

    另一种选择是从网络加载您的图像。如果您将来需要更改它们,这也将允许您控制它们。将它们连接到 Amazon S3 每月大约需要花费几美分。

    【讨论】:

    • 我使用的是从网络加载图像,但我将其保存在 sdcard 中,因为它们很多,并且每次 listview 记住运行到该列表图像时加载图像并不是一个很好的用户体验。跨度>
    • 如果您所做的只是缓存,那么我建议您使用外部存储。更糟糕的是,如果外部存储不可用,只需从网络重新加载即可。
    【解决方案3】:

    如果您不希望使用文件浏览器的每个人都看到您的文件,您可以创建一个在它前面带有一个点的文件夹,例如“/sdcard/.hidden” 但如果他们切换显示隐藏文件和文件夹,你就不太幸运了。

    heres 一个关于存储数据的 Android 页面的链接

    希望对你有帮助

    【讨论】:

    • 基本 *nix 文件隐藏是一个很好的方法。不过,强烈建议人们不要启用查看隐藏文件夹和文件的选项以确保自身安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多