Определите, было ли мероприятие фронтом из-за обратной навигации

Я хотел бы узнать, отображается ли моя активность, потому что пользователь снова нажал на другую активность. В жизненном цикле я не мог идентифицировать обратные вызовы, которые надежно дают мне эту информацию.

onRestart() не работает. Он также срабатывает, если задача приложения будет перенесена на передний план. onResume() не будет работать по той же причине.

Я предполагаю, что для этого есть простое решение, но в Android, возможно, простые вещи могут быть довольно неприятными.

Ответ 1

Вызов 2-го действия с помощью startActivityForResult(Intent, int), затем переопределите onBackPressed() во втором setResult() и установите для параметра setResult() значение RESULT_CANCELED. Наконец, у вас есть 1-й вид активности в onActivityResult().

Пример кода:

Мероприятие 1:

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 0);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        if (resultCode == RESULT_CANCELED) {
                // user pressed back from 2nd activity to go to 1st activity. code here
        }
    }
}

Мероприятие 2:

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    finish();
}