Я недавно заметил, что когда я загружаю из файла код, основанный на веб-просмотре (используя ресурсы или локальный каталог), при вызове метода destroy () WebView будет терять память.Я сузил это до ссылочной проблемы.Программа / веб-просмотр делает копии исходного представления и теряет ссылки в таблице JNI - это в конечном итоге приводит к аварийному завершению работы программы после 512 записей.
Я видел эту статью, но исправление непротекающего веб-просмотра делаетне похоже на работу с HTML в ресурсах или внешних папках.
Утечка памяти в WebView
Проблема не существует, когда приложение полностью основано на сервере;но мне нужно, чтобы приложение могло "синхронизировать" данные и обновлять офлайн-репо с этими представлениями.
Дополнительная информация: я взял веб-просмотры и поместил их в ViewPager для прокрутки.Эта проблема не существовала в 3.2.4 / 1, но появилась в 4.0.3.Я получаю много предупреждений JNI (не удалось найти запись), и они все еще существуют после уничтожения представлений.Я посмотрел на него через hprof и заметил, что HTML остается в потерянных переменных.
Буду признателен за любую информацию о том, как исправить это поведение.
Редактировать:
Сведения о сбое
Failed adding to JNI local ref table (has 512 entries)
"Thread-375" prio=5 tid=15 RUNNABLE
| group="main" sCount=0 dsCount=0 obj=0x41504a90 self=0x1a9cf80
| sysTid=10314 nice=0 sched=0/0 cgrp=default handle=27159240
| schedstat=( 455083000 66745000 774 ) utm=30 stm=15 core=3
at android.content.res.AssetManager.readAsset(Native Method)
at android.content.res.AssetManager.access$700(AssetManager.java:35)
at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:573)
at dalvik.system.NativeStart.run(Native Method)
ОБНОВЛЕНИЕ:
Чтобы устранить эту проблему, необходимо загрузить с SD-карты иликакой-то другой механизм хранения.Ошибка постоянна при загрузке файла Javascript, я не знаю, исправлен ли он в Chrome, но, похоже, он не исправлен в браузере в новейшей ОС.