Моя проблема: я не могу найти способ перезапустить свою деятельность от себя. Например, в игре, если вы умрете, есть меню с возможностью повторного запуска, которые немедленно перезапускают сцену. Это точно так.Попытка перезагрузить Android-активность сама по себе не работает
Как я прочитал от многих других ответов на этот вопрос, существует 2 основных метода перезагрузки активность:
1- finish(); startActivity(getIntent());
2- recreate();
Первый метод Безразлично Кажется, я работаю для меня, потому что он перезапускает активность, но оставьте предыдущую созданную, открытую на задней панели моего стека. Похоже, что инструкция finish() не выполняет свои действия. Я попытался поставить его вперед, после, и всевозможные способы, но он никогда не закрывает деятельность, оставленную позади.
С другой стороны, номер опции 2 не может быть вызван (насколько я знаю) из-за потока пользовательского интерфейса, и если это произойдет, приложение завершится с ошибкой. Я попытался вызвать метод recreate, используя:
Activity.this.runOnUiThread(new Runnable() {
public void run() {
recreate();
}
});
Но этот подход очень ужасно мигает на моем экране. Внезапно появляется черный экран, и это кажется неправильным.
Благодарим вас за ответ. Это работает для меня, но активность не закрывается. Он продолжает добавлять все больше дубликатов активности в стек. – Gerardpp
Редактировать вопрос и написать свой код – aldakur
Похоже, ответ aldakur был более ясным для моих нужд. Я просто добавил немного лишней строки кода в свой манифест, чтобы убедиться, что система не принимает больше экземпляров этого конкретного действия, используя: 'android: launchMode =" singleInstance "'. – Gerardpp