Я создаю приложение, используя Android Компонент навигации, и я столкнулся с такой проблемой, что если пользователь открывает настройки и вручную отказывает в разрешениях на локализацию, когда приложение находится в фоновом режиме, приложение перезапускается, но состояние навигации не будет очищен.
Странно, что если я добавлю этот код в метод MainActivity onCreate, приложение будет перезапущено несколько раз (4-5 попыток), а затем будет работать правильно (текущий пункт назначения не равен startDestination ).
val isOnStartDestination = navHostController.graph.startDestination == navHostController.currentDestination.id
if (!isOnStartDestination) {
val intent = Intent(applicationContext, MainActivity::class.java)
val mPendingIntentId: Int = 123
val mPendingIntent = PendingIntent.getActivity(applicationContext, mPendingIntentId, intent, PendingIntent.FLAG_CANCEL_CURRENT)
val mgr = applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
mgr[AlarmManager.RTC, System.currentTimeMillis() + 1000] = mPendingIntent
exitProcess(0)
}
Похоже, что состояние навигации сохраняется в другом месте действия или приложения.
Есть идеи, почему это происходит?