Ответ
Для автоматического перезапуска приложения можно использовать PendingIntent с AlarmManager:
val intent = Intent(context, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val alarmManager = context.getSystemService(ALARM_SERVICE) as AlarmManager
alarmManager.set(
AlarmManager.RTC,
System.currentTimeMillis() + 1000, // через 1 секунду
pendingIntent
)
// Завершаем текущий процесс
android.os.Process.killProcess(android.os.Process.myPid())
Важные моменты:
- Используйте
FLAG_IMMUTABLEдля PendingIntent (требуется с Android 12+) - Указывайте
FLAG_ACTIVITY_NEW_TASKдля Intent - Альтернативный вариант - использовать
System.exit(0), но это менее надежно
Для более плавного перезапуска можно сначала закрыть все Activity через finishAffinity(), а затем запустить новую Activity.