Почему Fragment легковеснее чем Activity

Ответ

Фрагменты легковеснее, потому что:

  1. Жизненный цикл проще, чем у Activity (нет onRestart(), onNewIntent() и т.д.)
  2. Ресурсы - Fragment использует ресурсы родительской Activity (контекст, window)
  3. Пересоздание быстрее, так как FragmentManager сохраняет состояние автоматически
  4. Память - не требует отдельного процесса/стека активностей
// Пример замены Activity на Fragment
class MyFragment : Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

Фрагменты позволяют создавать гибкие UI, переиспользуя компоненты в разных активностях. Однако для простых экранов иногда Activity предпочтительнее.

Ответ 18+ 🔞

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

Смотри, в чём прикол. У фрагмента жизненный цикл — просто песня, ёпта. Нету этой всей ерунды вроде onRestart() или onNewIntent(), с которыми можно так накосячить, что сам от себя охуеешь. Всё чётко и по делу.

Дальше — ресурсы. Фрагмент, сука, как мартышлюшка на шее у активити: сидит себе и пользуется всем её хозяйством. Контекст, окно — всё мамино, родное. Не надо выёбываться и своё городить.

А пересоздание? Вообще сказка! FragmentManager сам, блядь, как нянька, состояние фрагмента сохраняет и восстанавливает. Скорость — просто удивление пиздец, ни хуя себе! И памяти жрёт меньше, потому что отдельный процесс ему не нужен, не то что какой-нибудь тяжёлой активити.

Вот, смотри, как просто заменить активити на фрагмент:

// Пример замены Activity на Fragment
class MyFragment : Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

Красота же, да? Чисто, аккуратно. Фрагменты, блядь, дают овердохуища гибкости: один и тот же кусок интерфейса можно, как хуй с горы, катать по разным активистям. Переиспользование на уровне бога, ёбать копать!

Но и тут, конечно, есть своя ложка дёгтя. Иногда для простого экрана, где нихуя сложного не происходит, проще взять старую добрую активити — и не париться. А то нагородишь фрагментов, а потом сидишь и думаешь: «Чёрта в душу, в сердцу мать, зачем я эту кашу заварил?».

В общем, инструмент на все случаи жизни. Главное — понимать, где его применять, а где не выёбываться.