После перезапуска приложения состояние навигации не очищается - PullRequest
0 голосов

Я создаю приложение, используя 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)
    }

Похоже, что состояние навигации сохраняется в другом месте действия или приложения.

Есть идеи, почему это происходит?

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