【发布时间】:2012-06-26 17:02:17
【问题描述】:
在android中,不可移动的外部存储(内部)和内部存储有什么区别?我不确定在哪里保存我的数据。我只需要保存人们可以随时拉取的游戏统计数据
谢谢
【问题讨论】:
标签: android
在android中,不可移动的外部存储(内部)和内部存储有什么区别?我不确定在哪里保存我的数据。我只需要保存人们可以随时拉取的游戏统计数据
谢谢
【问题讨论】:
标签: android
在许多较新的设备中将不再有物理区别,“内部”和“外部”存储共享相同的闪存芯片,甚至不一定具有固定分配,因此差异实际上仍然是预期访问范式之一。
外部存储上的文件(真实的或模拟的)不可避免地会与所有东西共享,并且可以被任何具有该清单权限的东西修改。传统上它们很容易被看到,但对于最近的 MTP 访问设备,系统可能需要在连接的 PC 看到它们之前被告知它们。
相反,内部存储上的文件对于应用程序来说是私有的,但以 root 或系统运行的任何文件除外,或者如果应用程序决定让它们通常可见或可更改。即使可以访问,内部存储上的数据也可能更难以在拥有的应用程序之外访问 - 它不受面向消费者的 USB 大容量存储或 MTP 机制的支持,即使对于其他应用程序和开发工具,也很难找到它,除非您知道在哪里查看,因为虽然您可以检查应用程序选择共享的文件夹,但您无法浏览父文件夹(通常是 /data 或 /data/app)。即使对于应用程序的开发人员来说,在调试期间访问它在私有存储上创建的文件也可能有点令人沮丧(尽管 apk 是可调试的,但可以使用 run-as 工具和 adb 进行调试,或者您可以构建导出功能进入应用程序,或在 adb 有 root 的模拟器上运行)。
您的决策过程可能应该是这样的:它是否意味着对拥有的应用程序是私有的?如果是这样,请将其放在内部存储设备上,除非它太大且针对旧设备,在这种情况下,您可能需要在放置外部存储设备之前对其进行加密和/或签名以进行保护。否则,如果要共享,需要交给任意其他组件(电子邮件应用程序等),或者很大,请将其放在外部存储上。
【讨论】:
在android中,不可移动的外部存储(内部)和内部存储有什么区别?
外部存储绝不意味着可移动。它始终意味着“用户可以通过插入 USB 电缆并将其作为驱动器安装在主机上来访问”。早期的 Android 设备碰巧具有可移动的外部存储,但这从来不是定义。
内部存储是用户无法访问的存储,除非通过已安装的应用程序(或通过 root 设备)。
【讨论】:
对于 Chris 的回答,如果您担心外部存储(SD 卡)不可用,您可以在每次应用加载时简单地检查一下,然后相应地提取相关信息。
你可以这样使用:
if(isSDPresent)
{
// SD Card is present
// Your code goes here, files will be located @ /mnt/sdcard/Android/data/packagename
}
else
{
// SD Card is not presenet
// files located here /data/data/packagename
}
如果您在模拟器上进行测试,您可以加载您的 DDMS 并找到存储在 revlent 位置的所有文件。
希望这会有所帮助。
【讨论】: