Должен ли я использовать что-то кроме getResource (). GetStringArray () для заполнения большого массива?

Следуя примеру 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 или аналогичный) и полностью избежать этой проблемы? Такое ощущение, что мне здесь не хватает чего-то очевидного.

5
задан RedBlueThing 19 August 2010 в 13:20
поделиться