Как я могу отключить «вернуться» к какой-либо деятельности? - PullRequest
37 голосов
/ 16 июня 2011

Я не хочу, чтобы пользователь мог вернуться к заставке моего приложения. Похоже, что одним из решений является проверка того, является ли действие ниже текущего экземпляром заставки, и в этом случае выйдите из приложения, как показано в коде ниже. Тем не менее, я не знаю, как проверить, какая предыдущая активность в стеке. Кто-нибудь может помочь? Есть ли другой способ отключить «вернуться» к данному виду деятельности?

@Override
public void onBackPressed() { 
    if(<previous activity in stack is an instance of splashscreen>){   
        Intent exit_intent=new Intent(CurrentActivity.this, SplashScreen.class);
        exit_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        exit_intent.putExtra("EXIT", true);
        context.startActivity(exit_intent);
    }
}

Ответы [ 4 ]

121 голосов
/ 16 июня 2011

Звоните finish() в вашей активности на заставке сразу после начала следующей активности.

Другой подход заключается в добавлении этого атрибута к вашей деятельности в AndroidManifest.xml: android:noHistory="true"

Пример:

<activity android:name=".SplashActivity" android:noHistory="true"/>

Этот атрибут предписывает Android удалить SplashActivity изстек истории, как только он вышел из.

20 голосов
/ 16 июня 2011

Просто позвоните context.finish() после context.startActivity()

9 голосов
/ 30 января 2014

попробуйте следующее при вызове следующего Activity с вашего заставки:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
2 голосов
/ 27 сентября 2017
<activity android:name=".SplashActivity" android:noHistory="true"/>

Из документации :

Должно ли действие быть удалено из стека активности и закончен (вызывается его метод finish ()), когда пользователь уходит из него, и он больше не виден на экране - "правда", если это должно быть закончено, и «ложь», если нет. Значение по умолчанию неверно".

Значение «истина» означает, что деятельность не покинет исторический след. Он не останется в стеке действий для задачи, поэтому пользователь не сможет вернуться к нему. В этом случае, onActivityResult () никогда не вызывается, если вы запускаете другое действие для результат этой деятельности.

Этот атрибут был введен в API уровня 3.

...