res / raw,assets或sdcard?

时间:2013-01-06 15:24:33

标签: android resources

我正在开发一个对图像,视频和其他资源很重的应用程序。什么是存储所有这些信息的适当位置?我可以通过编程方式看到原始文件夹可能是最容易处理的,但对此有什么正确的策略?

2 个答案:

答案 0 :(得分:4)

  • 对于已经压缩的项目,资产是非常糟糕的地方 - 当您构建应用程序时,会尝试压缩这些资源,这会对性能产生影响。也在减压。
  • 如果您提前拥有图像,Res / raw是一个很好的方法,特别是如果您在启动应用程序后不想下载它们,那么让用户等待。
  • Sdcard应该给你最大的空间。但是,您需要从网上下载资源,我无法想到您使用应用程序发送它们的方式,并将它们移动到SD卡。从Internet下载资源时,请确保将它们存储在以下子文件夹中:

    private File getResourceFilePath(String ralativePath, Context context) {
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
            return new File(context.getExternalFilesDir(null), ralativePath);
        } else {
            return new File(context.getFilesDir(), ralativePath);
        }
    }
    

否则,您可能会在用户设备的图库中使用资源。

答案 1 :(得分:0)

请记住,如果您将它存储在res或raw文件夹中,它将包含在您的apk文件中,这将使您的编辑和上传到游戏商店的时间更长,并且还可以使用户从Play商店下载和更新更长时间

如果媒体非常静态并且超过几个meg,请将其设置为一个zip文件,该文件可以侧面下载并存储在用户可以选择的单独文件夹中。这样,您可以更新媒体,而不是更新应用程序。

如果您沿着zip文件路线走,那么您应该查看Google Play所拥有的APK扩展文件支持。 http://developer.android.com/google/play/expansion-files.html

请注意,如果您使用扩展,其他商店(亚马逊,Nook等)仍然需要在您的应用中下载zip文件支持。

-James