(Обратите внимание, что я искал в Интернете предупреждения, которые я описываю ниже, и почти ничего не нашел о них.)
Я работаю с API уровня 10. У меня есть экран настроек (на основе XML), и один из вариантов там создает настраиваемую ListActivity следующим образом:
- PreferenceActivity содержит параметр, который создает ...
- ListActivity , это диалог, который использует ...
- setOnClickListener () , который содержит метод onClick (), который ( непосредственно перед вызовом finish () ) запуститActivity () новый Intent ...
- подвид деятельности , который запускает ...
- AsyncTask , который выполняет работу с переменным временем, которая по завершении вызывает ...
- onPostExecute () , который вызывает метод finish ()
Дело в том, что это работает ... но я получаю массу предупреждений, начиная с:
10-16 21:59:25.010: WARN/WindowManager(170): Rebuild removed 4 windows but added 3
10-16 21:59:25.010: WARN/WindowManager(170): This window was lost:.....
Любопытно, что эта масса предупреждений появляется ТОЛЬКО, когда задача выполняется быстро! Когда я добавил в свой AsyncTask вызов Thread.sleep () для искусственного раздувания времени выполнения, он работал и не выдавал никаких предупреждений. На самом деле, до тех пор, пока для его запуска требуется более (примерно) 500 мс, он работает нормально. (Обратите внимание, что я попытался использовать startActivityForResult (), чтобы добиться большего эффекта - такая же проблема возникает.)
Цель состоит в том, чтобы пользователь выбирал элемент предпочтения, он изменял его настройку, выполнялась некоторая обработка, а затем пользователь оставлялся обратно в меню предпочтений, в котором он начал.
Бьюсь об заклад, это состояние гонки ... порядок, в котором разрушаются окна, варьируется в зависимости от этого времени выполнения ... и у меня складывается впечатление, что когда дочерняя активность закрывается до своего родительского ListActivity, появляются предупреждения быть брошенным. Но добавление сна в 1 с () не является разумным решением, если только это не какая-то ошибка в Android (маловероятно, но опять же, я уже воспроизвел пару таких ошибок сегодня).
Итак, какой недостаток в этом моем, который приводит к этому потоку предупреждений? Было бы неплохо сказать «по предпочтению, сделай это, затем сделай это, затем закончи», но я думаю, что Я делаю это эквивалентно. Может быть, нет ... мысли?
Редактировать: я решил попробовать сделать ListActivity как собственный диалог ... это было одной из самых болезненных вещей, которые я пытался сделать в последнее время (getApplication () не работает, и многие другие вещи, кажется, идут неправильно ... это может быть в некоторой степени неопытно, но диалоги для этого тоже не предназначены ...