Intereting Posts
Как установить дату и время на Android-устройстве Ошибка cmake с андроидом ndk Как наложить изображение или изображение поверх снимка, снятого камерой Ошибка Android Pre Compiler 'Путь должен включать имя проекта и ресурса' Автоматическая обработка изменений конфигурации пользовательского интерфейса в Activity и Fragment иногда не работает Libgdx использует ScreenUtils асинхронно и не останавливает игровой цикл Как найти расстояние (по дороге) между 2 точками геометрии в приложении Android без использования google map direction api? Как я могу использовать обертку TabHost, содержащую MapView, который также отображает над ним представление AdMob? Не понимаю, как использовать GridLayout.spec () Android Facebook намерение Установка Visual Studio 2015 зависает в Android SDK Setup (API-уровень 19 и 21) и уровень 22 Как правильно установить контрольную точку исключения в Android Studio? Чтение температуры через DHT11 с помощью Android Things Android – загружает значения из базы данных sqlite в arraylist Получить имя страны входящего звонка с использованием номера телефона?

Выполнение паузы активности, которая не возобновляется после воссоздания метода

У меня есть проект для HoneyComb, и я получаю сообщение об ошибке после использования метода recreate () в методе onResum () в моей основной деятельности.

11-10 22:05:42.090: E/ActivityThread(1917): Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main} 11-10 22:05:42.090: E/ActivityThread(1917): java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.blogspot.honeyapp/com.blogspot.honeyapp.Main} 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2517) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2505) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2483) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.access$700(ActivityThread.java:122) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1031) 11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Handler.dispatchMessage(Handler.java:99) 11-10 22:05:42.090: E/ActivityThread(1917): at android.os.Looper.loop(Looper.java:132) 11-10 22:05:42.090: E/ActivityThread(1917): at android.app.ActivityThread.main(ActivityThread.java:4123) 11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invokeNative(Native Method) 11-10 22:05:42.090: E/ActivityThread(1917): at java.lang.reflect.Method.invoke(Method.java:491) 11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 11-10 22:05:42.090: E/ActivityThread(1917): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 11-10 22:05:42.090: E/ActivityThread(1917): at dalvik.system.NativeStart.main(Native Method) 

Я создаю новый проект, чтобы показать вам, что происходит.

Вы можете найти его по адресу http://xp-dev.com/svn/RecreateError/trunk/

Я не знаю, в чем моя вина, но я запускаю Activity и регистрирую жизненный цикл Activity. Результат:

 11-10 22:26:45.960: I/seasons log(2274): onCreate() 11-10 22:26:45.990: I/seasons log(2274): onStart() 11-10 22:26:45.990: I/seasons log(2274): onResume() 

Теперь я нажимаю значок панели действий, чтобы активировать флаг воссоздания и перейти на другое приложение …

 11-10 22:30:26.390: I/seasons log(2274): onPause() 11-10 22:30:27.080: I/seasons log(2274): onStop() 

И вернемся к моей активности с обновленным флагом, активирующим то, что будет сделано rereate () at onResume ().

 11-10 22:33:05.500: I/seasons log(2274): onCreate() 11-10 22:33:05.510: I/seasons log(2274): onStart() 11-10 22:33:05.510: I/seasons log(2274): onResume() 11-10 22:33:05.510: I/seasons log(2274): onPause() 

OnPause? Но моя активность видна, что я делаю неправильно? Правильный статус не является onResume ()?

И теперь, если я перейду на другое приложение, я получу ошибку.

Спасибо за ваше время и извините за мой плохой английский.


В настоящее время я не понимаю, как такие приложения, как File Manager HD, выполняют это действие.

Две операции: основная деятельность A, активность B с предпочтением. Фрагмент в качестве основного контента.

Один из вариантов, который изменяет тему между Holo и Holo.Light, Activity B изменяется с помощью метода OnSharedPreferenceChangeListener в PreferenceFragment, но когда мы возвращаемся к методу onResume() на onResume() , как это сделать?

Я смущен. Сожалею.

Solutions Collecting From Web of "Выполнение паузы активности, которая не возобновляется после воссоздания метода"

Для этого используйте обработчик:

 Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what==MSG_RECREATE) recreate(); } }; @Override protected void onResume() { if(condition) { Message msg = handler.obtainMessage(); msg.what = MSG_RECREATE; handler.sendMessage(msg); } } 

Это больше не грозит.

Я не знаю, является ли это причиной ваших проблем, но вы не сравниваете такие строки в Java;

 protected void onResume() { ... if (recreate == "S") { recreate = "N"; recreate(); } 

Используйте if ("S".equals(recreate)) .

Вы никогда не должны вызывать onPause onCreate onResume т. Д. Самостоятельно. Вам не нужно использовать recreate() для того, что вы хотите сделать, поместите код инициализации в другое место, если он нуждается в обновлении. Кроме того, используйте целое число, чтобы сохранить состояние программы вместо строки, а затем объявить некоторые конечные переменные для ссылки, например

 public final int RECREATE_ON = 1; public final int RECREATE_OFF = 2; private int recreate = RECREATE_OFF; ... if(recreate==RECREATE_ON){ recreate(); } 

Помните, что делает recreate ():

Объясните, что этот объект будет создан с новым экземпляром. Это приводит, по существу, к тому же потоку, что и при создании Activity из-за изменения конфигурации – текущий экземпляр перейдет через свой жизненный цикл в onDestroy (), а затем после него создаст новый экземпляр.

Вот почему вы получаете сообщение onPause .