Подтвердить что ты не робот

Использование фрагмента Android без использования пользовательского интерфейса

Я просматриваю документацию Android для фрагментов. Макет, который определяет UI фрагмента, может быть определен в макете Activity в отдельном XML файле или вообще отсутствует.

Согласно документации

вы также можете использовать фрагмент, чтобы обеспечить фоновое поведение для этой операции без представления дополнительного интерфейса.

Зачем мне нужно использовать другой фрагмент для добавления функциональности в Activity вместо определения еще нескольких функций в Activity? Будет ли такой фрагмент без UI использоваться только для модульности? Есть ли еще одна причина для принятия такого подхода? Я был бы признателен за пример того, когда он подходит для использования фрагмента, отличного от UI.

Заранее благодарю вас за помощь.

4b9b3361

Ответ 1

Я предполагаю, что это о сохраненных фрагментах, внутри фрагмента вы можете вызвать setRetainedInstance (true), таким образом, ваш фрагмент не будет воссоздаваться во время изменений конфигурации. Обычно при повороте устройства все фрагменты будут воссозданы. Если вы вызываете setRetainedInstance (true) внутри onCreate(), то экземпляр фрагмента не будет воссоздан.

Что это значит? - вы можете поместить некоторые данные, массивы и т.д. внутри вашего фрагмента, и он не будет уничтожен во время изменений конфигурации. Вы также можете поместить async-задачу внутри такого фрагмента, и после того, как основное действие будет вращаться, ваша задача async в вашем фрагменте будет по-прежнему в состоянии предоставить результаты.

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

и простой пример из google (фактически используя Thread внутри сохраненного фрагмента):

https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java