Странное исключение NullPointerException

#android

#Android

Вопрос:

Я работаю над приложением для Android, где у меня есть только 2 действия… Первое действие вызывает второе действие.. При запуске мое приложение инициализирует глобальный список массивов с некоторой информацией, полученной через Интернет … затем запускается поток, который каждые 10 секунд извлекает ту же информацию и обновляет список массивов (поток не выделяет его снова)… Когда я запускаю второе действие, это сначала извлекает список массивов … это работает в моем эмуляторе и моем телефоне (htc wildfire), но для кого-то, у кого есть мое приложение, это работает только около 20 минут, после этого список массивов становится нулевым… почему это?? о, кстати, ArrayList — это массив CopyOnWrite, если это может быть важно…

Заранее спасибо за любой ответ,

=.4.S.=

Ответ №1:

Это предположение из-за отсутствия деталей, которые вы публикуете, но, скорее всего, ваше первое действие завершается, и, таким образом, ArrayList собирается GC.

Комментарии:

1. Я подумал то же самое ^^ но почему GC должен прервать мою активность?? должно закрыть все приложение … и кроме того, что ArrayList является глобальным и определен в глобальном классе, который расширяет Application… объявление его статическим может решить проблему??

2. Если это поле в экземпляре приложения, то причина не в этом. Я бы посоветовал вам добавить к вопросу как можно больше деталей, чтобы мы могли выяснить, что происходит.

3. О, и извините за отсутствие подробностей…. код приложения слишком большой, вы можете найти его здесь code.google.com/p/somadroid/source/checkout и приложение здесь market.android.com/details?id=org.as.somadroid

4. Как вы можете видеть в классе somadroidApp, есть объект ChannelFactory, который содержит ArrayList каналов, которые извлекаются потоком в основной активности Somadroid… Somadroid может запускать PlayRadio, который при создании извлекает ChannelFactory и иногда выдает исключение…

5. Может ли CopyOnWrite ArrayList заполнить память?? (CopyOnWrite должен создавать копию каждый раз, когда я что-то изменяю, верно? ) значит, GC обязан удалить ArrayList?