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

Я работаю над заменой своей домашней пусковой установки, и она работает нормально, но меня беспокоит одна вещь. Когда я нажимаю домашнюю клавишу, текущая домашняя активность (та, которая определена в манифесте как main/defualt/launcher/home) перезапускается — текущий экземпляр активности onpause выполняется, а oncreate запускается снова, поэтому появляется новая активность.

С другой стороны, ADW launcher и LauncherPRO так себя не ведут - я не делаю рефреш как в моем случае. Launcher Pro даже может выполнять несколько действий:

  1. Если вы находитесь на главном экране со значками приложений, он уменьшается, чтобы увидеть снимок всех экранов,
  2. Если вы откроете ящик и нажмете «Домой», вы просто вернетесь на главный экран.

Любые идеи, как это сделать?

Я только что сделал очень простой прототип с нуля всего с одним действием (определенным в манифесте как main/defualt/launcher/home) и вижу то же самое — он воссоздается, если я нажимаю Home.


person tiptop    schedule 28.12.2010    source источник


Ответы (2)


Добавлять

if (!isTaskRoot()) {
    finish();
    return;
}

в onCreate() вашего первого действия (см. Android приложение перезапускается при открытии по щелчку значка приложения).

person JTatie    schedule 14.04.2015
comment
isTaskRoot истинно в обоих экземплярах действия. Когда я использую приведенный выше фрагмент, экран пуст. Более старый экземпляр активности также не уничтожается. - person Varsha Ravikumar; 14.10.2019

Добавьте android:launchMode="singleInstance" к элементу <activity> в манифесте.

person CommonsWare    schedule 28.12.2010
comment
android:launchMode=singleTop также должен работать нормально. было бы невозможно вызвать другие действия из его одного, если используется singleInstance, как я понимаю. - person mishkin; 29.12.2010
comment
@mishkin: я использую пример приложения Home из SDK, в котором используется singleInstance. Любопытно, что программы запуска AOSP используют singleTask. - person CommonsWare; 29.12.2010
comment
добавление соответствующего ответа @CommonsWare для получения информации о заданных дополнительных вопросах: Панель запуска Android нажмите "Домой" в панели запуска, чтобы перейти на экран по умолчанию - person Richard Le Mesurier; 04.09.2013