我写了2个应用程序,其数据从互联网下载。由于此数据(大约40Mb,在几个zip文件中)是相同的,因此我希望在2个应用程序之间共享它,以便为用户消耗更少的带宽和更少的存储空间。在Android应用程序之间共享不可变文件

目前,我还没有找到一个很好的解决方案:

的渊源,我在公众下载目录中保存的数据。 这是一个简单的解决方案,但它需要读取权限,我想避免这种情况。

后来我想,我可以使用内容提供商(和inputStreams和mmaped字节缓冲区),但为核心,我的应用使许多zip文件 在一个大ZipResourceFile其中: 一些压缩文件的读取和复制 一些非压缩文件被mmaped和

所以作为Lucene的数据库,我可以约一个简单的FileProvider忘记,因为我需要一个文件得到的ZipFile以解压缩我的数据

但是,如果我得到一些通过这样的ZipFileContentProvider mmaped字节缓冲区,这将是能够有一个长期和安全的生活吗? (我应该使用服务?) 如果服务它的ZipFileContentProvider进程死了怎么办? 记忆体消耗情况如何?什么是警告? ContentProvider是不是应该以短命的方式使用?

有没有更好的解决方案?

UPDATE:

真的很讨厌那个机器人不能共享目录从同一developper(和其他没有人)一些应用程序。或者可能吗?

UPDATE2:

我认为存储文件的getExternalFilesDir(),但下面的正式警告是让我非常紧张(什么写什么?):

注意事项虽然提供的目录getExternalFilesDir()和 getExternalFilesDirs()不是由MediaStore内容提供商 访问,其他应用程序与READ_EXTERNAL_STORAGE权限的用户可以访问 到外部存储器上的所有文件,包括这些。如果您需要 完全限制文件的访问权限,则应该将文件写入 到内部存储器。

+0

不能使用ZipInputStream封装从ContentResolver打开的InputStream吗? –

+0

没想过。与ZipFileProvider相比,性能应该是可怕的,尽管当你必须遍历整个文件来读取最后一个zipEntry时... –