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

Каков прецедент для фрагмента без пользовательского интерфейса?

В руководстве для разработчиков Android есть достойный раздел об использовании Fragments. Один из способов использования фрагментов - без пользовательского интерфейса. Есть несколько ссылок на использование этого как средство фоновой обработки, но какие преимущества делают Фрагменты в этой области? Где бы я решил использовать фрагмент над потоками, AsyncTasks, Handlers и т.д. Для фоновой обработки?

4b9b3361

Ответ 1

Экземпляр

A Fragment может сохраняться через изменения конфигурации устройства (например, поворот экрана). Поскольку Activity будет уничтожен и воссоздан, когда произойдет сбой конфигурации, трудно создать тот, который будет отслеживать поток или AsyncTask. С другой стороны, система заботится о повторном прикреплении сохраненного Fragment к соответствующему Activity на другом конце (так сказать) изменения конфигурации. Вы все равно будете использовать поток или AsyncTask, только теперь Fragment удерживает его.

Для него могут быть другие применения, но есть тот, о котором я могу думать.

Ответ 2

У меня есть большой кусок довольно сложного кода, который обрабатывает логины для различных социальных сетей - facebook, google, twitter. Это код, который мне нужно повторно использовать в разных действиях, так как пользователь может войти в систему из разных мест приложения. Он не относится к классу базовой активности, потому что вы можете наследовать только один класс, и я использую это наследование для других, не связанных между собой функциональных возможностей.

Фрагмент ui-less идеально подходит для моей ситуации, и фрагмент подходит для вас, так как мне нужны обратные вызовы жизненного цикла, например (facebook известен в этом отношении, нуждаясь, например, onActivityResult и т.д.).

Ответ 3

Я согласен с Грегом Эннисом.

Сейчас я работаю над приложением, которое должно выполнить серию вызовов RESTful api. По большей части это делается только в рамках одного действия. Но я просто использовал безгласный фрагмент, чтобы разобраться с случаем, когда для каждой последовательности нескольких вызовов требовалось два разных действия и, конечно же, обрабатывать ошибки в любом месте последовательности. Путем централизации последовательности в фрагменте я мог избежать дублирования достаточного количества кода.

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

Там больше информации о сохраненных фрагментах в Понимание набора фрагментов FritmentRetainInstance (boolean)

Ответ 4

Они также называются Безглавых фрагментов. Вы можете прочитать больше здесь

Ответ 5

Очень полезная особенность безгласных фрагментов

Безглавые фрагменты, есть одна действительно полезная функция - они могут быть сохранены FragmentManager через изменения конфигурации. Поскольку у них нет какого-либо интерфейса, связанного с ними, их не нужно разрывать и перестраивать снова, когда пользователь поворачивает устройство, например. Чтобы активировать это поведение, нужно просто установить сохраненный флаг Фрагмента при его инициализации. Это можно сделать в методе onCreate для фрагмента.


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
}

ref- https://luboganev.github.io/blog/headless-fragments/