Я публикую двуязычное приложение для словарей (https://play.google.com/store/apps/details?id=com.akkzrt.szotarhude012013a), оба языка с более чем 130 000 заглавных слов. При запуске программы я предварительно загружаю данные в два массива ArrayAdapters из двух текстовых файлов utf-8, хранящихся в папке с ресурсами, затем я устанавливаю первый адаптер в свой единственный ListView. В верхней части этого ListView у меня есть кнопка для перехода на другой адаптер (назад и вперед). Я тестировал некоторые устройства (samsung galaxy mini, asus tf201, samsung galaxy s 1 и 2, lg nexus 4, samsung galaxy nexus), и все прошло хорошо.Android ListView с большим количеством данных - ошибка из памяти
Тогда один пользователь пришел ко мне со своим Sony Ericsson Experia MK16i. Он жаловался, что приложение не запускалось для него, просто загрузилось в течение долгого времени, а затем исчерпало память. На моей странице администратора разработчика Google Play у меня есть два авария java.lang.OutOfMemoryError: один в dalvik.system.NativeStart.main и один в android.graphics.BitmapFactory.nativeDecodeAsset.
Что я могу сделать? Должен ли я переписать весь мой модуль загрузки с использованием баз данных sql и cursoradapter? Я бы хотел этого избежать.
Всякая помощь и идея высоко оценены. Большое спасибо: Иштван
Вы подумали о возможности загрузить ваши данные по запросу? Например, когда вы используете приложение Instagram, когда свиток достигает дна, он автоматически загружает больше фотографий. В вашем случае вы загрузите больше данных ... Как сегментированная загрузка, чтобы не переполнять вашу память. Это просто идея. –
Спасибо за идею. Я загрузил всю базу данных в arrayadapter (память) для лучшей производительности, а для других моих словарей (100000 записей) он не выдавал ошибок в памяти даже на более слабых устройствах, я, должно быть, достиг своего предела. (Хотя он отлично работает на галактике samsung mini.) – mistvan