Возврат ко второму действию после нажатия кнопки «Домой»

Я пробовал все режимы запуска, но они не работают:

Предположим, что приложение A имеет различные действия, J и K. J является начальным (для выбора режима приложения), которое вызывает K, где происходят основные вещи (после его вызова J finish()es). Если я нажму кнопку «Домой» в K, а затем снова открою приложение, откроется новый экземпляр A с активностью J.

Я бы хотел, чтобы вместо этого открывалась приостановленная активность K. В других темах упоминается ошибка Android - есть ли способ ее исправить? Установка режима запуска не работает :С

Большое спасибо.


person user1264201    schedule 27.12.2012    source источник
comment
О, любопытная вещь: когда J открывается после нажатия домой, нажатие назад показывает предыдущий экземпляр K.   -  person user1264201    schedule 27.12.2012
comment
То, что вы хотите, это нормальное поведение Android. Тот факт, что он не работает, означает, что вы, вероятно, делаете что-то странное. Не пытайтесь решить эту проблему, экспериментируя с режимами запуска. Пожалуйста, опубликуйте соответствующие части вашего манифеста. Однако есть ошибка, которая проявляется следующим образом. Чтобы узнать, не является ли эта ошибка причиной вашей проблемы, выполните следующие действия: принудительно закройте приложение на телефоне. Теперь запустите свое приложение из списка приложений на телефоне. Перейдите от ActivityJ к ActivityK. Нажмите ДОМОЙ. Откройте приложение снова. Если это работает сейчас, вы просто видите ужасную ошибку запуска Android.   -  person David Wasser    schedule 28.12.2012
comment
Вау, да, это сработало. Это была ошибка запуска Android. Большое спасибо, вы молодцы! (Я бы принял ваш ответ, но, поскольку это комментарий, я не могу.)   -  person user1264201    schedule 28.12.2012
comment
Прохладный. Я создал ответ из своего комментария. Рад помочь. Я добавил несколько ссылок на проблемы с ошибками для справки.   -  person David Wasser    schedule 28.12.2012


Ответы (2)


То, что вы хотите, это нормальное поведение Android. Тот факт, что он не работает, означает, что вы, вероятно, делаете что-то странное. Не пытайтесь решить эту проблему, играя с режимами запуска. Пожалуйста, опубликуйте соответствующие части вашего манифеста. Однако есть ошибка, которая проявляется следующим образом. Чтобы узнать, не является ли эта ошибка причиной вашей проблемы, выполните следующие действия: принудительно закройте приложение на телефоне. Теперь запустите свое приложение из списка приложений на телефоне. Перейдите от ActivityJ к ActivityK. Нажмите ДОМОЙ. Откройте приложение снова. Если это работает сейчас, вы просто видите ужасную ошибку запуска Android.

Дополнительные сведения об ошибке запуска см. в следующих выпусках:

http://code.google.com/p/android/issues/detail?id=2373

http://code.google.com/p/android/issues/detail?id=26658

Баг есть на всех устройствах, на всех версиях Android (по крайней мере до ICS, на JellyBean еще не проверял). Все это работает в эмуляторе так, как должно, поэтому вы не можете использовать поведение эмулятора как показатель реального поведения устройства.

person David Wasser    schedule 28.12.2012

Попробуй это

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
    // Activity was brought to front and not created,
    // Thus finishing this will get us to the last viewed activity
    finish();
    return;
}

// Regular activity creation code...
}
person Rahul    schedule 27.12.2012
comment
Нет, не работает :( Причина в том, что вы предположили, что новая активность J была такой же, как и предыдущая, но это была новая. Старая цель J завершена(). В любом случае, спасибо! - person user1264201; 27.12.2012