TL; DR: Существует ли способ скопировать zip-файл, содержащий тысячи файлов из ресурсов Android, во внутреннее хранилище, что более эффективно, чем использование ZipInputStream
?
My AndroidПриложение имеет несколько ресурсов, которые необходимо скопировать в хранилище устройства при первом запуске.Они хранятся в виде zip-файлов в ресурсах и копируются через ZipInputStream
, как описано здесь (в методе unzip
).Существует 10 zip-файлов общим объемом 36 МБ, а процесс распаковки / копирования занимает около 3 секунд.
Проблема : мне нужно добавить новый ресурс объемом 39 МБ, но он добавляет около 30секунд до процесса.Я догадываюсь, что это потому, что ресурс состоит из 5500 файлов (в среднем около 7 КБ каждый).Поскольку при запуске мне нужны ресурсы, запуск этого в фоновом режиме невозможен, и 30+ секунд - это очень много времени, чтобы показать заставку.
В этом посте предлагается использоватьZipFile
вместо ZipInputStream
, но, похоже, он не работает должным образом в Android, как отмечалось здесь и других сообщениях S / O, и я испытываю то же исключение ZipException, описанное там (обратите внимание, это после копирования zip-файла во внутреннее хранилище - ресурсы Android предоставляют только поток, а не файл, поэтому zip-файл необходимо скопировать из ресурсов, прежде чем можно будет использовать метод ZipFile).
Есть ли ещеэффективный способ сделать это?