Запускать первый экран каждый раз, когда приложение выходит из фона в android

У меня есть приложение, в котором есть 5 действий (A, B, C, D, E). Приложение может переключаться между этими действиями. Когда пользователь нажимает кнопку «Домой» на устройстве, приложение переходит в фоновый режим, а после того, как приложение переходит на передний план, должно быть запущено первое действие, то есть действие.

Пример: приложение в активности D, после нажатия кнопки домой приложение переходит в фоновый режим, и когда дело доходит до переднего плана, оно должно открывать действие A, а не D.

Решения, которые я пробовал, - это режим запуска, я установил режим запуска для действия A (singleInstance), но не смог найти необходимое решение.

Поскольку в вопросе нет информации о кнопке возврата, возможно, вам нужен флаг Intent.FLAG_ACTIVITY_NO_HISTORY.

Lionel Briand 11.04.2018 12:09
1
1
216
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

вы можете получить метод ondestroy () или onpause (). на этом ты можешь сделать

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); //

Когда вы нажимаете кнопку «Домой», переходите к Activity A. Возможно, это сработает:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_HOME)
    {
        Intent intent = new Intent(this, MyActivityName.class); 
        //replace MyActivityName.class with the name of your Activity A
        startActivity(intent);
    }
    return super.onKeyDown(keyCode, event);
}

Вы можете установить android: clearTaskOnLaunch = "true" для Activity A в вашем файле манифеста, чтобы добиться желаемого:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.beispieldomain.stackoverflowxmlparse">

    <application
        ...
        <activity 
            android:name=".MainActivity"
            android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Взгляните сюда:

Управление задачами
clearTaskOnLaunch

Ответ принят как подходящий

Для запуска того же Activty вы должны очистить все действия, когда приложение переходит в фоновый режим. Когда приложение переходит в фоновый режим, используйте приведенный ниже код, который очистит текущую активность и все другие действия, которые находятся в стеке.

Для API 16+ используйте

finishAffinity ();

Для более низких (Android 4.1 и более ранних версий) используйте

ActivityCompat.finishAffinity (YourActivity.this);

Спасибо за ответ, это единственное решение, которое у меня сработало.

ndn 11.04.2018 13:41

Другие вопросы по теме