Поведение домашнего ключа
При разработке примерного приложения для Android я создал две операции
1) Мероприятие 1
2) Мероприятие 2
Теперь Activity 2 является основной задачей, тогда как Activity 1 является фоновым. Теперь пользователь нажимает клавишу "Домой". Приложение (то есть обе действия) исчезает. Теперь мы перезапускаем приложение, которое мы видим в качестве активности переднего плана. Мой вопрос:
1) Поддерживает ли платформа запись истории при нажатии клавиши "домой"?
2) Как мы можем перейти к последнему действию запуска при перезагрузке приложения?
Ответы
Ответ 1
Я боролся с этим нечетным поведением более месяца, но я, наконец, выяснил объяснение в результате проб и ошибок.
Такое поведение возникает, когда вы запускаете приложение из Eclipse, из командной строки или если вы устанавливаете приложение и нажимаете кнопку Open (вместо кнопки Done), чтобы запустить приложение сразу после его установки.
Если в одном из этих случаев вы запустите свою апликацию, перейдите в Activity1, а затем в Activity 2, нажмите кнопку HOME, а затем нажмите значок приложения, и он откроет новый экземпляр Activity1. Не верьте мне на слово. Просто нажмите BACK и убедитесь, что он доставит вас в Activity2, который вы оставили при нажатии HOME.
Кажется, что активность запуска не помещается в стек активности, если приложение запускается одним из указанных выше способов, поэтому он создает новый экземпляр активности запуска поверх текущих действий в стеке приложений, Это выглядит как ошибка.
Итак, обходным решением было бы выйти из приложения, при первом запуске из Eclipse или командной строки или кнопки Open и т.д., нажав кнопку BACK столько раз, сколько необходимо, а затем снова введите приложение. С этого момента поведение будет таким, как ожидалось.
EDIT:
Лучшим решением будет следующее: создать DummyActivity и настроить его как главную точку входа в приложение. Также добавьте флаг android:noHistory="true"
. DummyActivity
прост и будет выглядеть так:
Открытый класс DummyActivity расширяет действие {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!MyApplication.startedApp) {
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
}
finish();
} }
MyApplication
- это класс, который расширяет android.app.Application и определяется внутри AndroidManifest.xml. В HomeActivity.class
вы установите внутри метода onCreate()
логическое поле startedApp
в значение true. Если пользователь нажимает BACK с экрана, вам нужно переместить значение для startApp на false.
Открытый класс HomeActivity расширяет действие {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyApplication.startedApp = true;
}
@Override
public void onBackPressed() {
MacawApplication.startedApp = false;
super.onBackPressed();
}
}
Итак, при первом запуске приложения он входит в блок if и запускает первую реальную активность в нашем приложении. Если вы перейдете через приложение, а затем нажмите ДОМОЙ, а затем снова запустите приложение, DummyActivity
будет вызван во второй раз, и он просто вызовет finish()
сам по себе, и приложение покажет последнее действие перед нажатием HOME.
Ответ 2
Поддерживает ли платформа любую запись истории при нажатии домашней клавиши?
Да. Действия при запуске/завершении вставляются/удаляются из/из стека истории.
Как мы берем пользователя к последнему действию запуска при перезапуске приложение?
AFAICT, это должно быть поведение по умолчанию. Когда вы перезапускаете приложение, вы попадаете в последнее действие в стеке, если вы не измените стек.
Прочтите это для деталей: Основы приложений - действия и задачи
Ответ 3
Это ошибка с ОС Android.
Проделайте следующие шаги.
1) Удалите приложение и переустановите его.
2) После установки приложения он отобразит две опции "Готово" и "Открыть", нажмите кнопку "Готово".
3) Теперь откройте приложение из меню приложения. Ваша проблема будет решена.
Когда будет нажата кнопка HOME, приложение начнет с состояния, в котором оно осталось.
Ответ 4
Я также могу рекомендовать читать Руководство по разработке действий и задач. Это руководящие принципы пользовательского интерфейса о том, как вести себя, когда нажата кнопка "Домой", когда нажата кнопка "Назад" и т.д.
Это не очень технический, но он очень хорошо показывает, как должно выглядеть ваше приложение и что ожидает система.
Ответ 5
Вы не можете использовать кнопку "Главная"...
На странице разработки Android говорится, что новая кнопка ввода нового дома.
это легко понять. Спасибо.
Ответ 6
Режим запуска вашей активности может повлиять на поведение, когда он повторно запускается после нажатия на кнопку "домой". Если первая активность была запущена как синглетная или однократная, тогда всегда будет первая активность, которая будет возобновлена.
Если действия запускаются с использованием режима запуска по умолчанию, а затем, когда приложение перезапускается, предыдущее действие будет возобновлено.
Ответ 7
когда вы нажмете кнопку "домой", приложение исчезнет, при повторном запуске приложения активность переднего плана будет возобновлена,
причиной является его поведение в операционной системе Android.
Ответ 8
У меня была аналогичная проблема. Он не запускал последнее открытое действие, а деятельность Launcher. Но я также поставил
android:launchMode="singleTask"
в моей деятельности Launcher в манифесте. Удаление этого исправлено.
Если вы также поместили одно и то же, а затем попробуйте удалить его, он также может исправить вас.