外部内部存储

时间:2012-06-26 17:02:17

标签: android

在android中,什么是不可移动(内部)的外部存储和内部存储之间的区别?我不知道在哪里保存我的数据。我只需要保存一个人可以随时拉动的游戏统计数据

谢谢

3 个答案:

答案 0 :(得分:13)

在许多较新的设备中,不再存在物理上的区别,“内部”和“外部”存储共享相同的闪存芯片,甚至没有固定分配,因此差异确实仍然是预期的访问范例之一。

外部存储(真实或模拟)上的文件不可避免地与所有内容共享,并且可以通过具有该清单权限的任何内容进行修改。传统上它们很容易看到,虽然最近的MTP访问设备可能需要在连接的PC看到之前告知系统。

相比之下,内部存储上的文件对应用程序是私有的,除了以root或系统运行的任何内容,或者应用程序决定使它们通常可见或可更改。即使在可访问的情况下,内部存储上的数据也可能更难以在拥有的应用程序之外访问 - 消费者目标USB大容量存储或MTP机制不支持它,甚至对于其他应用程序和开发工具,除非您定位,否则很难找到知道在哪里查看,因为当您可以检查哪些应用程序已选择共享的文件夹时,您无法浏览父文件夹(通常是/ data或/ data / app)文件夹。即使对于应用程序的开发人员来说,在调试期间访问它在私有存储上创建的文件也会有点令人沮丧(虽然apk是可调试的,但可以使用run-as工具和adb,或者您可以构建导出功能在应用程序中,或在adb具有root的模拟器上运行。

可能你的决策过程应该是这样的:它是否意味着对拥有的应用程序是私有的?如果是这样,请将其放在内部存储器上,除非它太大并且针对较旧的设备,在这种情况下,您可能需要在放置到外部存储器之前对其进行加密和/或签名以进行保护。否则,如果它是要共享的,需要交给任意其他组件(电子邮件应用程序等),或者很大,将它放在外部存储上。

答案 1 :(得分:7)

  

在android中,有什么不可移动的内部存储(内部)和内部存储之间的区别?

外部存储从不意味着可移动。它总是意味着“用户可以通过插入USB电缆并将其作为驱动器安装在主机上”进行访问。早期的Android设备发生以拥有可移动的外部存储空间,但这绝不是定义。

内部存储是用户无法访问的存储,除非是通过安装的应用程序(或通过生根设备)。

答案 2 :(得分:1)

如果您担心外部存储(SD卡),请回答Chris的回答,不管是否可用,您只需在每次应用加载时检查一下,然后相应地提取相关信息。

您可以使用以下内容:

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位置的所有文件。

希望这有帮助。