Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android相当于文档和缓存目录_Android_Ios_Porting - Fatal编程技术网

Android相当于文档和缓存目录

Android相当于文档和缓存目录,android,ios,porting,Android,Ios,Porting,我有一个关于android中预定义目录的问题 在我的apple iOS应用程序中,我使用以下两个目录: //document dir for user files that need backup NSString *d = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0]; //cache dir for re-downloadable data

我有一个关于android中预定义目录的问题

在我的apple iOS应用程序中,我使用以下两个目录:

//document dir for user files that need backup
NSString *d = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
//cache dir for re-downloadable data
NSString *c = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
现在我想在android上也这么做,但我不确定它在那里应该如何使用。我猜是这两个函数,但如果出现错误,进行一些确认或重定向将非常好

String d = Environment.getExternalStorageDirectory().getAbsolutePath();
String c = Environment.getDownloadCacheDirectory().getAbsolutePath();

另一点是,这两个目录都将包含数百兆字节,所以我可能需要为这两个目录使用外部存储?当设备需要更多空间时,会在iOS上清除缓存目录。android中是否有类似的机制?

根据您最低支持的android版本,您应该查看:

Context#getExternalCacheDir()

因此,要在活动中使用这些,您只需调用:

File cacheDir = getExternalCacheDir();
或者从一个片段:

File cacheDir = getActivity().getExternalCacheDir();
Android不保证在任何给定时间清除缓存目录。这是你的责任


要快速了解在android上应该如何使用缓存目录,请参阅:

设备重启时缓存被清除。或者,如果用户进入设置>应用程序>所有应用程序>Sepcific应用程序>清除缓存。哎哟,谢谢你指出这一点。我觉得更像是一个可以在需要时擦除的永久存储,因为该应用程序应该也可以脱机处理下载的内容。这看起来更好,谢谢。8级API对我来说也不是问题。因此,我应该只使用context.getExternalFilesDir(null).getAbsolutePath()来表示用户数据,而context.getExternalCacheDir().getAbsolutePath()来表示可重新下载的数据,两者都在SD卡上,因为内存有限?正确。然而,SD卡也可能受到限制。只需确保为缓存设置了合理的最大大小。
File cacheDir = getActivity().getExternalCacheDir();