我有一个下载大量内容的应用程序(因用户而异,但可能是200mb到1GB或更多)。
目前,我将所有这些内容保存在外部存储上,因为这可能是空间最大的区域,例如SD卡。这在大多数情况下都可以正常工作,但是这种情况并不一定是理想的。
如果设备具有内置的外部存储设备(如大多数平板电脑),但也有SD卡插槽,则外部存储问题会变得有点复杂。该应用程序可以安装到SD卡上,但内容将保存在内置存储中,而不是外部SD卡。
如果应用程序安装在SD卡上,是否会拨打getFilesDir()
在SD卡或内部存储空间中提供路径?
处理此问题的最佳方法是什么?我应该将内容保存到内部存储(在SD卡上),外部存储器还是在启动应用程序时询问用户最好的想法?
答案 0 :(得分:6)
该应用程序可以安装到SD卡上,但内容将保存在内置存储中,而不是外部SD卡。
没有。如果设备具有外部存储,则应用程序将安装到外部存储。设备也是否有SD卡无关紧要。
无论应用安装在何处,如果应用程序安装在SD卡上,调用getFilesDir()会在SD卡或内部存储器上给出路径吗?
getFilesDir()
都始终内部存储。
答案 1 :(得分:1)
如果应用程序安装在SD卡上,将调用getFilesDir()给出一个 SD卡上的路径,还是内部存储?
没有。 getFilesDir()
类中的Context
方法始终返回内部存储路径(以Android术语表示)。
在大多数情况下,getFilesDir()
返回的目录路径为/data/data/your.application.package.appname/files
。但它可能因不同的手机,不同的Android版本而异。
要将您的应用文件存储在SD卡中,您可以在File[] getExternalFilesDirs (String type)
课程中使用Context
方法。通常,第二个返回路径将是microSD卡的存储路径(如果有的话)。
在我的手机上,在/storage/sdcard1/Android/data/your.application.package.appname/files
作为null
getExternalFilesDirs (String type)
根据Google /官方Android文档,内部和外部存储术语与我们的想法相差甚远。