Android 是否将数据存储在内存中而不是sd卡上?

Android 是否将数据存储在内存中而不是sd卡上?,android,Android,我一直在为Android开发一个基于内容的应用程序,我需要在手机上存储超过120MB的数据。当用户第一次运行应用程序时,我从服务器下载这些数据。我的第一个问题是,我是否可以使用Context.getDir()方法将此数据存储在应用程序的内部内存中,还是使用Environment.getExternalStorageDirectory()将其存储在sd卡上更好。将数据存储在sd卡上的问题是,我必须以某种方式保护这些数据,否则其他所有应用程序或个人都可以访问这些数据。我的第二个问题是,如果可以在应用

我一直在为Android开发一个基于内容的应用程序,我需要在手机上存储超过120MB的数据。当用户第一次运行应用程序时,我从服务器下载这些数据。我的第一个问题是,我是否可以使用Context.getDir()方法将此数据存储在应用程序的内部内存中,还是使用Environment.getExternalStorageDirectory()将其存储在sd卡上更好。将数据存储在sd卡上的问题是,我必须以某种方式保护这些数据,否则其他所有应用程序或个人都可以访问这些数据。我的第二个问题是,如果可以在应用程序的内存中存储那么多数据,那么它们在内存中是否安全?

我的建议是在内存中


大多数设备都应该具有内部存储器和SD卡之间共享的相同存储分区。无论哪种方式,您都会占用相同的存储空间。从用户的角度来看,SD卡和内部存储器之间没有什么不同,只是SD卡中的数据可以通过某种方式共享,而这不是您想要的

我的建议在内存中


大多数设备都应该具有内部存储器和SD卡之间共享的相同存储分区。无论哪种方式,您都会占用相同的存储空间。从用户的角度来看,SD卡和内部存储器之间没有什么不同,只是SD卡中的数据可以通过某种方式共享,而这不是您想要的

您必须研究如何保护您的数据,因为您的应用程序数据应该部署/下载到外部存储sd卡中作为示例。 因为许多现代智能手机都依赖内存作为ram来运行应用程序

这就是为什么我认为您不应该在内部存储器中安装没有数据的应用程序。 我学会了为windows ce、windows mobile和类似的操作系统设备进行开发


谢谢,

您必须研究如何保护您的数据,因为您的应用程序数据应该部署/下载到外部存储sd卡中作为示例。 因为许多现代智能手机都依赖内存作为ram来运行应用程序

这就是为什么我认为您不应该在内部存储器中安装没有数据的应用程序。 我学会了为windows ce、windows mobile和类似的操作系统设备进行开发


谢谢,

第一个问题和第二个问题


如果要将文件保存到内存中,只需调用如下方法:

FileOutputStream fos=openFileOutput(文件名,上下文.MODE\u PRIVATE)

如果您设置了
Context.MODE_PRIVATE
,则其他应用程序甚至您和用户都看不到它。当然,此
模式\u PRIVATE
仅适用于没有root访问权限的手机。无论您是否设置了私有模式,那些已经扎根的手机都可以访问内存中的任何文件夹

因此,如果您决定将文件保存在内存中,不管大小如何,如果您认为这些文件应该保密,则需要使用某种加密

至于大小,120MB对于存储在内存中的数据文件来说有点过大。Nexus One时代的手机通常有512MB的内存,因此从用户的角度来看,他们不喜欢超大的应用程序占用内存,因为内存不足有时会导致Android操作系统停止接收短信并停止同步

总而言之,由于几乎所有Android手机都有根访问权限,直接将应用程序私有数据保存到外部或内部内存是不安全的。至于您的120MB数据大小,我建议您进行简单的加密并保存到SD卡

这是一个极好的例子


以下是中的保存选项,供您参考。

对于第一个问题和第二个问题


如果要将文件保存到内存中,只需调用如下方法:

FileOutputStream fos=openFileOutput(文件名,上下文.MODE\u PRIVATE)

如果您设置了
Context.MODE_PRIVATE
,则其他应用程序甚至您和用户都看不到它。当然,此
模式\u PRIVATE
仅适用于没有root访问权限的手机。无论您是否设置了私有模式,那些已经扎根的手机都可以访问内存中的任何文件夹

因此,如果您决定将文件保存在内存中,不管大小如何,如果您认为这些文件应该保密,则需要使用某种加密

至于大小,120MB对于存储在内存中的数据文件来说有点过大。Nexus One时代的手机通常有512MB的内存,因此从用户的角度来看,他们不喜欢超大的应用程序占用内存,因为内存不足有时会导致Android操作系统停止接收短信并停止同步

总而言之,由于几乎所有Android手机都有根访问权限,直接将应用程序私有数据保存到外部或内部内存是不安全的。至于您的120MB数据大小,我建议您进行简单的加密并保存到SD卡

这是一个极好的例子


以下是中的保存选项供您参考。

我不同意您的说法,即“大多数”设备具有与内部和外部共享的相同存储分区。对于大多数设备来说,这完全不是事实。最好假设内部存储是有限的,而外部存储(相对而言)并非如此。。在我的手机上消耗120mb内部存储空间的应用程序(可用于应用程序的756mb内部存储空间)将很快在我的全新顶级设备上卸载。我理解您的担忧。我和你一样