Поведение нажатия клавиши «Домой» - PullRequest
12 голосов
/ 15 июня 2010

При разработке примера приложения для Android я построил два упражнения: 1) Упражнение 1 2) Упражнение 2

Теперь занятие 2 является передним планом, а занятие 1 - фоновым.Теперь пользователь нажимает клавишу Home.Приложение (т.е. оба вида деятельности) исчезают.Теперь, когда мы перезапускаем приложение, мы видим Упражнение 1 в качестве переднего плана.Мой вопрос:

1) Поддерживает ли платформа какую-либо запись в истории при нажатии клавиши возврата домой?2) Как отвести пользователя к последнему действию запуска при повторном запуске приложения?

Ответы [ 8 ]

18 голосов
/ 24 января 2011

Я боролся с этим странным поведением более месяца, но я наконец-то нашел объяснение методом проб и ошибок.

Такое поведение происходит, когда вы запускаете свое приложение из Eclipse, из командной строки или еслиВы устанавливаете приложение и нажимаете кнопку «Открыть» (вместо кнопки «Готово»), чтобы запустить приложение сразу после его установки.

Если в одном из этих случаев вы запускаете приложение, перейдите к Activity1, а затемв Занятие 2, нажмите кнопку HOME, а затем нажмите значок приложения, откроется новый экземпляр Занятия1.Не верь мне на слово.Просто нажмите НАЗАД и увидите, что он возвращает вас к вашей Activity2, которую вы оставили, когда нажимали HOME.

Кажется, что активность запуска не помещается в стек активности, если приложение запускается одним из упомянутых способов.выше, именно поэтому он создает новый экземпляр действия средства запуска поверх текущих действий в стеке приложения.Это выглядит для меня как ошибка.

Таким образом, обходной путь должен состоять в том, чтобы выйти из приложения, при первом запуске его из Eclipse или из командной строки, или кнопки Open и т. Д., Нажав кнопку BACK столько разпри необходимости, а затем снова введите приложение.С этого момента поведение будет таким, как ожидалось.

РЕДАКТИРОВАТЬ: лучший обходной путь будет следующим: Создайте DummyActivity и установите его в качестве основной точки входа в приложение.Также добавьте флаг android:noHistory="true".DummyActivity прост и будет выглядеть так:

открытый класс DummyActivity extends Activity {

@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 расширяет Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    MyApplication.startedApp = true;
}

@Override
public void onBackPressed() {
    MacawApplication.startedApp = false;
    super.onBackPressed();
}

}

Итак,при первом запуске приложение входит в блок if и запускает первую реальную активность в нашем приложении.Если вы перемещаетесь по приложению, затем нажмите HOME, а затем снова запустите приложение, DummyActivity будет вызван во второй раз, и он просто вызовет finish() для себя, и приложение покажет последнюю активность перед тем, как вы нажали HOME.

2 голосов
/ 15 июня 2010

Поддерживает ли платформа какую-либо запись в истории при нажатии клавиши home?

Да.Действия, когда они запускаются / завершаются, помещаются / извлекаются из стека истории.

Как перевести пользователя к последнему действию запуска при повторном запуске приложения?

AFAICT, это должно быть поведение по умолчанию.Когда вы перезапускаете свое приложение, вы переходите к последнему действию в стеке, если вы не изменили стек.

Прочтите это для подробностей: Основы приложения - действия и задачи

1 голос
/ 01 августа 2013

Это ошибка в ОС Android.

Пожалуйста, выполните следующие шаги.

1) Удалите приложение и переустановите его.

2) После установки приложения отобразятся две опции: «Готово» и «Открыть», нажмите кнопку «Готово».

3) Теперь откройте приложение из меню приложения. Ваша проблема будет решена.

Когда нажата кнопка HOME, приложение запускается из состояния, в котором оно оставлено.

0 голосов
/ 02 февраля 2016

У меня была похожая проблема. Это было не начало последней открытой активности, а Активность запуска. Но я также поставил

android:launchMode="singleTask"

в моей Активности запуска в манифесте. Удаление, которое исправило мою проблему. Если вы тоже поставили то же самое, попробуйте удалить его, это может исправить и вас.

0 голосов
/ 25 сентября 2013

при нажатии кнопки «Домой» приложение исчезнет, ​​при повторном запуске приложения возобновится активность на переднем плане,

причина в поведении операционной системы Android

0 голосов
/ 13 октября 2011

Режим запуска вашей активности может повлиять на поведение, когда оно возобновляется после нажатия home.Если первое действие было запущено как singletask или singleinstance, то это всегда первое действие, которое будет возобновлено.

Если действия запускаются в режиме запуска по умолчанию, то после перезапуска приложения предыдущее действие будет возобновлено

0 голосов
/ 22 сентября 2011

Вы не можете обрабатывать кнопку Home ... На странице разработки Android написано, что кнопка «Домой» более новая. это легко понять .. Спасибо

0 голосов
/ 15 июня 2010

Я также могу порекомендовать прочитать Руководство по разработке заданий и задач . Это руководство по пользовательскому интерфейсу о том, как вести себя при нажатии кнопки «Домой», при нажатии кнопки «Назад» и т. Д.

Это не очень технично, но очень хорошо иллюстрирует, как должно вести себя ваше приложение и чего ожидает ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...