Android - Почему, черт возьми, мы должны использовать пакет saveInstanceState в фрагменте, а не в фрагменте аргументов? - PullRequest
0 голосов
/ 11 ноября 2018

Я только что проверил поведение набора аргументов фрагмента. Он постоянен, как пакет saveInstanceState! Если я сохраню что-то в аргументах фрагмента, это переживет активность и даже убийство приложения! Так почему же, черт возьми, есть пакет saveInstanceState? о_О

P.S. В случае с дополнительными действиями в намерениях, в которые я добавил, например, строку внутри кода действия, не выживает даже активный отдых. Выжить только те, кто вложил в создание самого намерения. Поэтому понятно, зачем нам нужно saveInstanceState.

1 Ответ

0 голосов
/ 11 ноября 2018

Аргументы фрагмента предназначены для внешнего использования для инициализации фрагмента. Сохраненное состояние экземпляра предназначено для внутреннего использования самим фрагментом. Есть также последствия жизненного цикла. Таким образом, фреймворк будет вызывать onSaveInstanceState (), когда это уместно, но если вы вызываете setArguments (), вы действительно не знаете, когда вам следует его вызывать. Если вы не вызываете его во время onSaveInstanceState (), в этом случае просто используйте сохраненное состояние. Если вы используете аргументы для хранения данных о состоянии, существует вероятность повреждения исходных данных инициализации. Наконец, setArguments () не может быть вызван после сохранения состояния фрагмента, поэтому этот подход ограничен относительно того, когда он будет работать.

...