ImageView вызывает сбой, но только при выходе из режима ожидания

У меня есть класс Activity, который использует два других класса; один из них расширяет ImageView, а другой расширяет BaseAdapter следующим образом: Вот так

Мой класс ImageView делает некоторые успехи, когда он вызывается, и когда я запускаю его в первый раз, он делает то, что я хочу. Это также имеет место, если я нажимаю кнопку «Домой», а затем возобновляю работу. Но почему-то не работает, если выхожу из режима ожидания. (нажатие кнопки на телефоне, которая затемняет экран) Когда я разблокирую телефон, он вылетает. Он вылетает из-за исключения nullPointerException и из того, что я могу прочитать, когда пытаюсь вызвать getChildAt() для GridView, определенного BaseAdapter.

Есть ли способ заставить приложение делать то же самое, что и при нажатии кнопки «Домой», как при переводе телефона в режим ожидания? РЕДАКТИРОВАТЬ:

public MyCustomDefinedImageViewClass (Context context) {
super (context);
mContext = context;
    MyCustomDefinedImageViewClass someThing =(MyCustomDefinedImageViewClass)gridViewIGetTheChildFrom.getChildAt(some int);

} Вот что вызывает мой сбой:

 11-19 22:00:48.200: E/AndroidRuntime(6252):     at my.package.name.MyCustomDefinedImageViewClass.<init>(MyCustomDefinedImageViewClass.java:57)

Я не думаю, что код сильно помогает, и именно поэтому я не опубликовал его в первую очередь.


person Magakahn    schedule 20.11.2012    source источник
comment
Пожалуйста, опубликуйте трассировку ошибки и соответствующий код   -  person sdabet    schedule 20.11.2012
comment
@fiddler Код добавлен, но это более общий вопрос о том, что я могу сделать, чтобы избежать сбоя, который возникает только в том случае, если активирован спящий режим.   -  person Magakahn    schedule 20.11.2012
comment
Извините, но я думаю, что у нас недостаточно информации для решения проблемы... Где инициализируется gridViewIGetTheChildFrom? Почему он нулевой? Где вы создаете свой экземпляр MyCustomDefinedImageViewClass ? ...   -  person sdabet    schedule 20.11.2012
comment
Недостаточно трассировки стека и кода. На самом деле это код, который выполняется до строки сбоя, которая является виновником ... поэтому, пожалуйста, добавьте минимальный вспомогательный код.   -  person Ronnie    schedule 20.11.2012
comment
@userSeven7s MyCustomDefinedImageViewClass someThing =(MyCustomDefinedImageViewClass)gridViewIGetTheChildFrom.getChildAt(some int); это код, который приводит к сбою. По какой-то причине ему не удается получить мой GridView после выхода из режима ожидания.   -  person Magakahn    schedule 20.11.2012
comment
Это потому, что ваш взгляд был уничтожен. Где существует этот аварийный код, какая часть жизненного цикла?   -  person Ronnie    schedule 21.11.2012
comment
@userSeven7s он падает на onPause, но только тогда, когда телефон переходит в спящий режим, и фактический сбой происходит, когда я снова его разбудил (при разблокировке экрана).   -  person Magakahn    schedule 21.11.2012
comment
Ваше приложение поддерживает только ландшафтный режим?   -  person Ronnie    schedule 21.11.2012
comment
@ userSeven7s Да, это игра только в ландшафтном режиме.   -  person Magakahn    schedule 22.11.2012


Ответы (1)


Попробуйте добавить

android:configChanges="keyboardHidden|orientation|screenLayout"

в ваш файл манифеста. Сбой является результатом перезапуска активности при появлении экрана блокировки. Экран блокировки требует портретной ориентации, и если вы не готовы к этому, ваше приложение может аварийно завершить работу.

Если это не помогло, попробуйте переопределить onRetainNonConfigurationInstance( ).

См. этот пост для получения информации о том, как сохранить объекты: Как чтобы сохранить много объектов в onRetainNonConfigurationInstance() в android

Также прочитайте эту тему группы Android. чтобы понять, что происходит, когда устройство переходит в спящий режим.

person Ronnie    schedule 21.11.2012