Я зашел в настройки телефона, изменил разрешение, Как сделать перезапуск приложения обратно в MainActivity? - PullRequest
2 голосов
/ 25 апреля 2019

Я выполняю обновление targetVersion в моем приложении.Теперь у меня проблема.Когда я захожу в настройки телефона, я вручную отказывал в разрешении.Когда я возвращаюсь к своему приложению, я хочу перезапустить его и вернуться к MainActivity.Теперь, когда я возвращаюсь, он просто перезапускает текущую активность.Можете ли вы дать мне совет?

Я проверил некоторые программы.Они подтвердили, были ли они изменены, судя savedInstanceState != null.Я думаю, что это неправильно, потому что я сделал резервную копию данных в saveInstanceState и только оценил savedInstanceState != null не в порядке, это односторонний.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Вам нужно будет хранить свои данные в более постоянной форме (общие настройки, база данных, файлы и т. Д.) И вручную восстанавливать их.

Когда пользователь отзывает разрешения через настройки, процесс приложения убивается без каких-либо обратных вызовов для предотвращения нежелательного поведения, например:

  1. Активность проверяет разрешение READ в onCreate
  2. пользователь приостанавливает активность и отзывает разрешение в настройках
  3. Активность возобновляется при условии, что она все еще имеет разрешение и вылетает при попытке чтения

Это включает в себя также уничтожение всех текущих услуг. В этом случае жизненный цикл обычной деятельности не применяется.

0 голосов
/ 25 апреля 2019

Либо вы можете проверить в OnResume, если разрешения были изменены.Однако это должно быть сделано всякий раз, когда вы просто «вкладываете и вкладываете обратно *» в приложение.Лучшим способом было бы проверить, если saveInstanseState! = Null, и если да, то вы перепроверяете соответствующие разрешения, и если они изменились, вы завершаете () действие, чтобы вернуться к MainActivity, и / или отправляете намерение перезапустить MainActivity, если это

saveInstanceState может быть «не нулевым» в большинстве случаев, чем при изменении разрешения, как вы указали, поэтому вам следует перепроверить соответствующие разрешения, чтобы убедиться, что что-то действительно изменилось.

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