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

У меня есть приложение с несколькими действиями, например:

Действие 1 → Действие 2 → Действие 3 → Действие 4

И я хотел бы закрыть все действия из любой деятельности и вернуться на домашний телефон.

Ответ 1

Вы можете добиться этого, используя BroadcastReceivers:

  • Создайте BaseActivity следующим образом:

public class BaseActivity extends Activity {
    private KillReceiver mKillReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mKillReceiver = new KillReceiver();
        registerReceiver(mKillReceiver,
            IntentFilter.create("kill", "spartan!!!"));
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mKillReceiver);
    }
    private final class KillReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    }
}

  • Сделайте ваши действия расширенными BaseActivity.
  • Всякий раз, когда вы хотите очистить стек:

Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);

Ответ 2

Вы можете очистить все предыдущие действия, используя следующие флаги:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 

Надеюсь, это поможет вам!

Ответ 3

Откройте AndroidManifest.xml и найдите действие, к которому вы хотите вернуться, и добавьте следующий атрибут

android:launchMode="singleTask"

Например, класс HomeActivity может иметь это в манифесте android

<activity android:name=".HomeActivity"
    android:launchMode="singleTask"/>

В любой момент вы можете закрыть все действия поверх этого, используя стандартный startActivity, например

startActivity(new Intent(this, HomeActivity.class));

Если вы обычно передаете дополнительные функции в намерение, вам не нужно делать это, так как оно вернется в любом состоянии, которое было раньше, и оно даже сопровождается анимацией, например, нажатием кнопки "Назад".

Ответ 4

И я хотел бы закрыть все действия из любой деятельности.

Это пользовательское враждебное поведение в Android. Пожалуйста, не делайте этого.

и вернуться на домашний телефон

Я понятия не имею, что это значит.

Если пользователь нажимает HOME, ваши действия могут и должны оставаться в ОЗУ на некоторое время, если пользователь вернется в ваше приложение.

Если по "домашнему телефону" вы подразумеваете, что одним из ваших действий является "домашний" приложение, и вы хотите вернуться к этому действию, когда пользователь нажимает кнопку какого-либо пункта или пункта меню, вызовите функцию startActivity() с помощью Намерение, что:

  • идентифицирует действие, которое вы хотите вернуть, в
  • имеет флаги FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP, чтобы указать, что вы хотите перенести это действие вперед и избавиться от других действий, которые ранее был запущен пользователь.