Как программно "перезапустить" приложение Android

Я пытаюсь создать в своем приложении функцию выхода из системы. Как правило, при выходе из системы данные приложения должны быть очищены. Что я хотел бы сделать, так это после выхода из системы приложение должно перезапуститься, чтобы можно было снова ввести учетные данные и т. Д. Проблема, с которой я столкнулся, заключается в том, что в момент, когда пользователь нажимает кнопку «выйти из системы», приложение уже выполняет 3-4 действия, и я не уверен, как вернуться к ним. Как мне (смоделировать?) Перезапуск приложения?


person Ryan    schedule 22.03.2013    source источник
comment
как вы сохраняете данные вашего приложения?   -  person kumar_android    schedule 22.03.2013
comment
В локальной БД, а также в файлах JSON. Мне удалось успешно очистить данные до сих пор   -  person Ryan    schedule 22.03.2013
comment
Отметьте этот вопрос / ответ stackoverflow.com/questions/2470870/   -  person Zelldon    schedule 22.03.2013
comment
Интересно, рекомендуется ли использовать System.exit (0) для перезапуска приложения и освобождения всех статических переменных и уничтожения представления фрагмента? Если нет, пожалуйста, подскажите мне, как это сделать. У меня та же проблема, что и у вас. Спасибо.   -  person Ishwor Khanal    schedule 12.08.2017


Ответы (1)


Свойства намерения оформления заказа, такие как отсутствие истории, очистка заднего стека и т. Д. Intent.setFlags

Intent mStartActivity = new Intent(HomeActivity.this, SplashScreen.class);
int mPendingIntentId = 123456;
PendingIntent mPendingIntent = PendingIntent.getActivity(HomeActivity.this, mPendingIntentId, mStartActivity,
PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager mgr = (AlarmManager) HomeActivity.this.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);
System.exit(0);
person Code_Life    schedule 22.03.2013
comment
Рабочий раствор - person Naveed Ahmad; 09.12.2017
comment
Будет ли тот же код работать и для Nougat? - person Tejas; 19.02.2018
comment
он работает отлично, за исключением того, что требуется время, например, 2-3 секунды, какое-либо решение для сокращения времени перезапуска? - person Kishita Variya; 20.12.2018
comment
@Kishita. Я так не думаю. Я очень удивлен, что в 2019 году это действительно работает, учитывая трудности, с которыми приходится сталкиваться, чтобы установить точный будильник. Некоторые китайские ПЗУ (например, OnePlus) блокируют такие будильники. - person Kathir; 27.01.2019
comment
@Kathir, тогда что мне использовать? - person Kishita Variya; 28.01.2019
comment
@Kishita Я наткнулся на эту статью, которая могла быть полезный. Я еще не пробовал это - person Kathir; 08.02.2019
comment
Нет необходимости в AlarmManager - person kostyabakay; 08.11.2019
comment
Немного не по теме, но может кому-то поможет. Запуск этого с отложенным обработчиком на 500-1000 мс - хорошая идея, если у вас есть проблемы с загрузкой общих предпочтений при запуске. Я использовал этот перезапуск при смене темы. Пользователь выбирает новую тему, если она отличается от старой, перезапускает приложение. Но без задержки новая настройка темы не была сохранена в DefaultSharedPreferences. Так что даже пользователь сменил тему, изменение не было сохранено вовремя. - person S0und; 28.11.2019
comment
не работает в android 10 - person Sarath Kumar; 24.07.2020