2015-04-08 3 views
1

Я заметил странное поведение на леденец Android 5.0. Когда у меня есть какое-то представление с фоном, подобным LinearView и андроиду: background = "@ drawable/image". Когда моя ошибка приложения (Неожиданная ошибка!), Чем (только иногда), фон исчезает, и на заднем плане только черный экран (как если бы этот drawable был удален)Android 5.0 нечетное поведение с фоном, извлекаемым

Я также вижу странное поведение с 2 изображениями, где они находятся мигает, а не появляется ...

При уведомлении, когда он появляется сверху, на несколько секунд появляется какой-то нечетный красный прямоугольник, который затем изменяется на соответствующий значок.

Приложение работает отлично на Android 4.4, но после установки прошивки Android 5.0, похоже, это странное поведение.

я опускаю, что есть проблема с шрифтами/Colores текстовых меток и исполнение заглавных букв

Есть ли где-то, что изменилось/перестал работать в типичных контролей и как оно должно быть соответствующим образом исправить?

Обновление! После перезагрузки моего приложения он работает правильно! Но такое поведение может побудить потенциальных пользователей скорее удалить приложение, чем перезапустить их телефон!

ответ

0

Я столкнулся с такой же проблемой. В начале приложение рушилось для OOM (OutOfMemory). Лучше управляя памятью, приложение не терпело крах, но одно и то же поведение (фон исчезает и на заднем плане только черный экран) можно воспроизвести с помощью «Настройки»> «Дополнительно»> «Диспетчер приложений»> «MyApp»> «FORCE STOP». Открытие приложения снова показалось странным (фон исчез). Очистка данных (или перезапуск устройства) и открытие приложения снова было единственным способом устранить проблему до следующего сбоя/принудительного останова.

В основной деятельности была в основном что-то вроде этого

private LruCache<String, Bitmap> mMemoryCache; 
mMemoryCache = new LruCache<String, Bitmap>(1024*1024*5); 
//... 

, и я изменил его так:

private LruCache<String, Bitmap> mMemoryCache; 
//... 
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
int availMemInBytes = am.getMemoryClass() * 1024 * 1024; 
mMemoryCache = new LruCache<String, Bitmap>(availMemInBytes/8); 

Предыдущий код был назначая «MaxSize» без учета эффективной доступной памяти. Новый код исправить это. Я не уверен, была ли эта проблема связана с новым ART (Android OS до 4.4.2 использовать Dalvik, новейшее использование ART) или некоторым другим изменением API, BTW с приведенным выше кодом. Надеюсь, это будет полезно для кого-то еще.

Смежные вопросы