3

我对 android 中的预定义目录有疑问。

在我的苹果 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中是否有类似的机制?

4

1 回答 1

2

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

Context#getExternalCacheDir()

http://developer.android.com/reference/android/content/Context.html#getExternalCacheDir()

Context#getExternalFilesDir(String) 

http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

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

File cacheDir = getExternalCacheDir();

或来自片段:

File cacheDir = getActivity().getExternalCacheDir();

Android 不保证缓存目录会在任何给定时间被清除。这样做是你的责任。

有关您应该如何处理 android 上的缓存目录的快速参考,请参阅:http: //developer.android.com/reference/android/content/Context.html#getCacheDir()

于 2013-08-01T18:50:14.470 回答