Функциональность выхода из системы в Android - PullRequest
3 голосов
/ 23 сентября 2011

Я создаю своего рода приложение для социальных сетей.Я реализую функциональность выхода из него.При нажатии кнопки «Выход» следует перейти к экрану входа, но вместо этого он теперь перемещается к экрану домашней страницы. Я использую следующий код для выхода из системы.

  IntentFilter intentFilter = new IntentFilter();
  intentFilter.addAction("com.package.ACTION_LOGOUT");
  registerReceiver(new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {

         System.out.println("onReceive Log out in progress");
          Intent intent1 = new Intent(getApplicationContext(),          Login.class);
                    startActivity(intent1);
                                finish();
                }
            }, intentFilter);

Ответы [ 6 ]

6 голосов
/ 23 сентября 2011

использовать следующее для выхода из системы.

yourintent.setflag(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);

Это может помочь вам

4 голосов
/ 23 сентября 2011

Просто введите намерение для входа в систему и поставьте флажок в намерении

inten1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

, чтобы очистить все действия и перейти на страницу входа в систему.

2 голосов
/ 26 марта 2012

Что сработало для меня, так это внутреннее отслеживание вашего состояния входа в систему, используя какое-то глобальное:

public boolean loggedin = false;

и затем во всех ваших действиях переопределите onResume () и finish (), если вы вышли из системы:

@Override
public void onResume() {
  super.onResume();
  if (!loggedin)
    finish();
}
2 голосов
/ 23 сентября 2011

Это проблема стека.Вы должны справиться с этим.Лучшее решение, которое я обнаружил, заключается в том, что при запуске приложения и при выходе из системы сохраняйте одну активность в стеке, в стеке будет отображаться только экран входа, а если пользователь нажмет кнопку «Назад», он увидит главный экран.

1 голос
/ 26 мая 2016

Попробуйте это:

Intent intent = new Intent(getApplicationContext(), Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
Toast.makeText(this, "Signed out", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
0 голосов
/ 21 апреля 2013

Сначала внесите эти изменения в свой код

Intent intent = new Intent(getApplicationContext(),Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Затем удалите finish (); , записанные внутри вашего вещательного приемника.Желаем удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...