【问题标题】:My cache folder in Android is null. Do I have to create it?我在 Android 中的缓存文件夹为空。我必须创建它吗?
【发布时间】:2011-03-06 04:04:25
【问题描述】:

我正在尝试缓存从网站获取的图像。但是,CacheManager.getCacheFileBaseDir() 始终返回 null

我需要在安卓模拟器中创建缓存文件夹吗?如果是,我该怎么做?它应该在哪个目录中创建?

【问题讨论】:

    标签: android caching


    【解决方案1】:

    不要使用它。这个答案有一个文档问题:How to use Android's CacheManager?。将Context#getCacheDir 用于特定于您的应用程序的缓存目录。您必须自己进行所有缓存管理,但是,该框架将在磁盘空间不足以及您的应用程序被卸载时管理内容。

    【讨论】:

    • 我已经尝试过发布在“this answer”链接上的代码。但是,我得到了一个 java.lang.nullPointerException
    • 这一行总是返回 nullPointerException。除了 INTERNET 权限之外,我是否需要添加任何权限才能使用缓存? CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap());
    • 不,我发布的意思是您不应该使用 CacheManager 并且它的文档是错误的。它不能在 webkit 之外使用。如果你想要一个简单快速的缓存目录,你需要使用Context#getCacheDir
    • 好的..明白了。非常感谢。是否有任何地方可以获取有关如何进行快速缓存的示例?
    【解决方案2】:

    如果您要缓存大量数据,您应该使用 SD 卡而不是内部存储器。所以你可以在 SD 卡上创建一个目录并将缓存保存在其中。

    File cacheDir;
    //Choose chache directory
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
      cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"MyCache");
    else
      cacheDir=context.getCacheDir();
    //File in cache directory
    File f=new File(cacheDir, "file.txt");
    

    【讨论】:

    • 如果我想将缓存存储在 sdcard 中,我该怎么做?
    • 有什么例子可以作为参考吗?因为我是安卓新手。
    • 感谢您的示例。我会试一试的。
    【解决方案3】:

    建议使用 Context.getExternalCacheDir()。

    此位置仅供您的应用使用,当您从 Android 设备卸载应用时,此 API 将删除此位置。为了使用它,您必须在 AndroidManifest.xml 中将以下语句作为条目

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多