Следуя примеру Android для заполнения ListView , я запрашиваю массив из моего strings.xml , используя Activity.getResource (). GetStringArray () :
String [] mDefinitions = getResources().getStringArray(R.array.definition_array);
Документация по этому методу довольно ясна, и я не ожидал, что с ним возникнут какие-либо проблемы:
Возвращает строковый массив, связанный с конкретным идентификатором ресурса.
Этот подход работал, как и ожидалось, для небольших наборов данных. , Однако, когда я заполнил strings.xml полным набором данных (около 2000 записей), я обнаружил, что приложение упало при попытке загрузить ресурс. Я заметил эту ошибку в журнале консоли:
Переполнение ReferenceTable (max = 512)
Игра с количеством элементов в моем строковом массиве Я подтвердил, что ошибка воспроизводима, когда число элементов превышает ~ 700 записей. [12155 Поиск проблемы в Google привел к тому, что некоторые разработчики столкнулись с такой же проблемой , но я не могу найти ничего в документации по Android, чтобы объяснить ее.
Кто-то столкнулся с проблемой создания проблемы для проблемы на странице кода Google Android, но ни она, ни какие-либо посты, с которыми я сталкивался, не получили удовлетворительного ответа.
Am Я неправильно подхожу к проблеме? Должен ли я сам заполнять данные (загружать файл и анализировать JSON или аналогичный) и полностью избежать этой проблемы? Такое ощущение, что мне здесь не хватает чего-то очевидного.