【问题标题】:Bundle app with files located in internal storage directory instead of assets directory?将应用程序与位于内部存储目录而不是资产目录中的文件捆绑在一起?
【发布时间】:2020-05-23 10:54:06
【问题描述】:

我正在构建一个应用程序,其中将包含与应用程序捆绑在一起的媒体文件。 用户还可以在运行时下载其他媒体文件。

我想将下载的文件存储在应用程序的内部存储目录中。 是否可以“捆绑”初始文件,使其也存储在内部存储目录中,或者我需要将它们放在assets 中,从而有两种不同的方式来访问我的媒体文件?

【问题讨论】:

    标签: android android-file android-storage


    【解决方案1】:

    是否可以“捆绑”初始文件,使其也存储在内部存储目录中

    如果您希望将它们自动放置在那里,那么不,没有选择。

    我是否需要将它们放在资产中,从而有两种不同的方式来访问我的媒体文件?

    欢迎您自己将资产复制到文件系统(请参阅AssetManager)。您会将文件系统视为“记录系统”,并且仅在需要时将内容复制到那里(例如,应用程序的首次运行,在用户执行“清除数据”之后)。

    【讨论】:

    • 好的,谢谢,我确实想知道这一点 - 但我的媒体文件非常大 - 所以如果我理解正确的话,我实际上会有两个文件,一个在资产中,一个在内部存储中,加倍我有多少存储空间?
    • @HPage:资产(通常)压缩在APK中,因此不会严格增加磁盘空间。但是,它会占用比文件本身更多的空间,并且根据可压缩性,它可能是两倍(或大约)。您可以将它们保留为资产而不制作文件系统副本,但这确实意味着一些增量代码。根据您的应用功能,我最多可以看到四种不同的媒体来源:资产、文件、内容(ACTION_PICKACTION_OPEN_DOCUMENT 等)和 Web。如果您打算加入rtsp 或其他方案,可能会更多。
    • @HPage:因此,抽象层可能很有用,甚至超出了这个资产场景。通过您定义的某些 API 的其他实现,将资产视为另一种媒体来源。
    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多