在android中,不可移动的外部存储(内部)和内部存储有什么不同?我不确定在哪里保存我的数据。我只需要保存一个游戏统计数据,一个人可以随时拉他们想要的
谢谢
发布于 2012-06-27 01:16:52
在许多较新的设备中,将不再有物理上的区别,“内部”和“外部”存储共享相同的闪存芯片,甚至不一定有固定的分配,因此差异实际上仍然是一个预期的访问范式。
外部存储上的文件(真实的或模拟的)不可避免地与所有内容共享,并可由具有该清单权限的任何人修改。传统上,它们很容易被看到,尽管对于最近的MTP访问设备,在连接的PC看到它们之前,可能需要将它们告知系统。
相反,内部存储上的文件是应用程序的私有文件,除了作为root或系统运行的任何文件,或者如果应用程序决定使它们通常可见或可更改的话。即使在可访问时,内部存储上的数据可能更难在拥有的应用程序之外访问-它不支持面向消费者的U盘大容量存储或MTP机制,甚至对于其他应用程序和开发工具,它也很难找到,除非你知道去哪里查找,因为当你可以检查应用程序选择共享的文件夹时,你不能浏览父文件夹(通常是/data或/ data / app )。即使对于应用程序的开发人员来说,在调试期间访问它在私有存储上创建的文件也可能有点令人沮丧(尽管apk是可调试的,但可以使用run-as工具和adb,或者您可以在应用程序中构建导出功能,或者在adb具有root的仿真器上运行)。
很可能你的决策过程应该是这样的:它是否意味着拥有应用程序的私密性?如果是这样,请将其放在内部存储上,除非它太大并且针对的是较旧的设备,在这种情况下,您可能需要在放置到外部存储之前对其进行加密和/或签名以进行保护。否则,如果它是要共享的,需要交给任意的其他组件(电子邮件应用程序等),或者很大,就把它放在外部存储上。
发布于 2012-06-27 01:05:41
在安卓系统中,不可移动的外部存储(内部)和内部存储有什么不同?
外部存储从来不意味着可移动。它总是意味着“用户可以通过插入USB数据线并将其作为驱动器安装在主机上”。早期的Android设备碰巧有可移动的外部存储,但这从来不是定义。
内部存储是指用户无法访问的存储,除非通过已安装的应用程序(或通过启动其设备)进行访问。
发布于 2012-07-09 18:26:46
根据Chris的回答,如果您担心外部存储(SD卡)不可用,您可以简单地在每次加载应用程序时检查这一点,然后相应地拉入relvent信息。
您可以使用类似以下内容:
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位置的文件。
希望这能有所帮助。
https://stackoverflow.com/questions/11212377
复制相似问题