Шрифт:
Вопрос 39
Могу ли я использовать метод onSaveInstanceState для сохранения всех моих переходных состояний?
Да, эта функция предназначена для этого.
Вы не должны использовать этот метод для сохранения очень больших объектов, так как это может занять время, чтобы сериализовать и де-сериализовать их.
Используйте этот метод только для сохранения небольших переходных состояний. Если мы хотим сохранить большие объекты, использовать функцию onRetainNonConfigurationInstance .
Вопрос 40
Могу ли я сохранить обновления базы данных в методе onSaveInstanceState ?
Да, вы можете сохранить, но убедитесь, что это не будет занимать слишком много времени.
Да, мы можем сохранить базу данных любого размера в этой функции.
Нет, потому что эта функция может быть не вызвана. Мы должны сохранить все обновления базы данных до или в функции оnPause . Если вы сохраните базу данных в onSaveInstanceState, то эта функция не будет вызвана, если пользователь нажимает кнопку назад в активности. onSaveInstanceState предназначена для сохранения текущего состояния, когда происходит изменение конфигурации, как, например, изменение ориентации экрана.
Вопрос 41
Если большие изображения загружаются из Интернета в методе оnCreate активности, где сохранить их в случае изменения конфигурации (поворот телефона)?
Использовать статическую переменную, чтобы указать на изображение, так что оно не будет убито в случае разрушения активности.
Использовать функцию onRetainNonConfigurationInstances , чтобы сохранить изображение.
Сохранить изображение в каком-либо файле или базе данных и получить его в методе оnCreate .
Вопрос 42
При запуске активности из уведомления, она будет запущена в новой задаче или старой задаче?
Ни то, ни другое, она будет запущена в задаче NotificationManager.
Она будет запущена в старой задаче, которая предоставила pending intent для NotificationManager.
Она будет запущена в новой задачи всегда.
Вопрос 43
Что флаг FLAG_ACTIVITY_CLEAR_TOP делает в следующем коде?
Предположим, что стек активностей A-> B-> C-> D. Код в настоящее время работает в активности «D». Теперь, что будет происходить в этом сценарии?
Intent in = new Intent (this, B. class);
in. setFlags (Intent. FLAG_ACTIVITY_CLEAR_TOP);
startActivity (in);
Код запускает еще один экземпляр активности «B» на вершине активности «D». Так что это будет выглядеть как A-> B-> C-> D-> B.
Код не будет запускать еще один экземпляр активности «B» на вершине активности «D». Вместо этого код отправит новое намерение в метод onNewIntent активности «B» и B появится на вершине D. Так что это будет выглядеть как A-> C-> D-> B.
Код не будет запускать еще один экземпляр активности «B» на вершине активности «D». Вместо этого код отправит новое намерение в метод onNewIntent активности «B» и активности C, D будут уничтожены автоматически, так что стек будет выглядеть A-> B.
Код запустит новый экземпляр активности «B» в другой задаче, так что две задачи будут доступны. Задача 1: А-> В-> С-> D и задача 2: В.
Вопрос 44
Если активность насильно закрыта системой Android из-за изменения ориентации экрана, как сохранить UI состояние?
Сохраните все ваши характеристики пользовательского интерфейса в onSaveInstanceState .
Сохраните все ваши состояния пользовательского интерфейса, используя функцию onRetainNonConfigurationInstance.
Сохраните все ваши состояния пользовательского интерфейса в оnPause.
Android сохранит и восстановит интерфейс автоматически, поэтому программисту не нужно беспокоиться.
Вопрос 45
Что такое weightSum и weight?
weightSum используется для обеспечения общего веса для компоновки, содержащей представления. weight свойство может быть применено к представлению и определяет индивидуальный вес конкретного представления.
weight свойство указывает, какая часть оставшегося места должно быть взято этим представлением. weightSum указывает общий вес представлений планировки. Если weightSum не предоставляется для макета, тогда weightSum будет автоматически рассчитано путем суммирования весов дочерних представлений в этом макете. Это всегда хорошая практика, чтобы установить weightSum для родительского макета при настройке весов дочерних представлений.
weight свойство указывает, какая часть оставшегося места должно быть взято этим представлением. weightSum указывает общее количество представлений, находящихся в этом макете. Если weightSum не предоставляется для макета, тогда weightSum будет автоматически рассчитано путем суммирования весов дочерних представлений в этом макете.