Выход из приложения полностью сохраняет активность в фоновом режиме - как выйти полностью? - PullRequest
0 голосов
/ 24 мая 2018

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

Во-первых, быстрое объяснение моего приложения:

У меня есть следующее действие:

Launcher ->Main -> A -> B -> C

Когда я открываю приложение, я запускаю панель запуска, проверяю, вошел ли я в систему ранее (обычно это так, ответ - да, я вошел в систему)), finish () -> перейти на главный экран, (ответить на вопрос в основном) -> перейти к A (..) -> перейти к B (...) -> перейти к C

безиспользуя любую отделку между Main, A, B и C.

в CI есть кнопка выхода, я хочу, чтобы она полностью вышла из приложения.

Вот мой код:

Launcher:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    checkIfUserLoggedIn();
    //some other code
}

private void checkIfUserLoggedIn() {
    String codeStr = DatabaseMgr.getPreferences(getString(R.string.savedCode), this);
    if (codeStr != null && !codeStr.isEmpty()) {
        moveToMainScreen();
    }
}

private void moveToMainScreen() {
    Intent intent = new Intent(MainActivity.this, MainScreen.class);
    startActivity(intent);
    finish();
} 

из Main -> A -> B -> C ==> тот же код, что и:

Intent intent = new Intent(<ACT>.this, <Next ACT>.class);
            startActivity(intent);

нажатие выхода в C:

Intent intent = new Intent(getApplicationContext(), MainScreen.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("EXIT", true);
            startActivity(intent);

MainScreen Activity:

if (getIntent().getBooleanExtra("EXIT", false)) {
        //1- this.finishAffinity();
        //2- finish()
        //3- Intent i = new Intent();
        //i.setAction(Intent.ACTION_MAIN);
        //i.addCategory(Intent.CATEGORY_HOME);
        //ListActivity.this.startActivity(i); 
        //finish();   

        //4- android.os.Process.killProcess(android.os.Process.myPid());
        return;
    }

все вышеперечисленные попытки оставляют меня на телефоне:

background

что я делаюнеправильно?

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

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

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Похоже, что вы спрашиваете, как сохранить приложение в списке недавно использованных приложений?

В этом случае вы можете добавить свойство в манифест приложения.Я только попытался добавить это свойство к «MainActivity» в моем приложении, и оно работало:

android:excludeFromRecents="true"

Я не знаю, нужно ли вам добавить его или все записи Activity в файле манифеста, ноиз моих тестов достаточно поместить его в «MainActivity».

В качестве альтернативы, вы можете попробовать добавить флаг:

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

в ваше намерение.

0 голосов
/ 24 мая 2018

РЕДАКТИРОВАТЬ:

Вы можете позвонить finishAndRemoveTask();, чтобы полностью очистить его, если ваш уровень API>> = 21.

Старый ответ:

Попробуйте использовать:

android.os.Process.killProcess(android.os.Process.myPid());

перед этим кодом:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
...