Виджет приложения для Android SeekBar прогресс сохраняется на Дестрой () - PullRequest
0 голосов
/ 19 марта 2019

Я начал изучать программирование на Android недавно, после того, как вообще сделал очень длительный перерыв (пол десятилетия) от программирования.Пока все шло хорошо.

Я заметил, что прогресс Seek Bar сохраняется в событии onDestroy после того, как происходит ротация (изменение конфигурации), и это происходит при фрагментированной активности.Затем я создал пустое действие и добавил виджет в макет, и результат такой же (как я и ожидал, но все еще пытался из-за некоторого кода).Я также попытался переопределить метод onCreate и передать нулевой SavedBundleInstance в super.onCreate (), и результат тот же.Так что я не знаю, где сохранено расположение прогресса Seek Bar до onDestroy, а затем передано обратно, если я не пропустил некоторую статическую переменную в классе SeekBar или его суперклассах.(Я просто подумал об этом сейчас, я должен проверить это)

Может кто-нибудь объяснить, почему это происходит?

1 Ответ

0 голосов
/ 19 марта 2019

Обычно Android View s сохраняет свое состояние при вращении.То же самое происходит, например, с EditText.Если вы что-то введете, а затем поверните устройство, текст будет сохранен.
Это делается внутри определенного класса View.

Но как это состояние сохраняется при изменении ориентации?Например, в Деятельности у вас есть onSaveInstanceState(Bundle bundle).Этот метод вызывается системой до изменения конфигурации.Чтобы сохранить состояние Activity, вы должны хранить внутри bundle значения, которые хотите сохранить.Затем, когда Activity создается снова, этот bundle возвращается вам, например, в методе onCreate.Таким образом, вы можете восстановить свое состояние.

А как же View с?Они используют похожий механизм.Если мы хотим детали, мы должны смотреть на исходный код.Давайте посмотрим на исходный код из ProgressBar.Оказывается, у View тоже есть onSaveInstanceState ( эта строка ).Вы можете видеть, что прогресс сохраняется.

Надеюсь, это прояснит механизм.

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