Ответ
Нет, Fragment не может быть виден в состоянии onStop().
Когда onStop() вызывается, это означает, что фрагмент больше не виден пользователю (например, активность перешла в фон или перекрыта другим полноэкранным фрагментом/активностью).
override fun onStop() {
super.onStop()
// UI больше не видна, но фрагмент еще не уничтожен
}
Если нужно выполнить действия при потере видимости, используйте onPause() (когда фрагмент частично закрыт) или onStop() (когда полностью не виден).
Ответ 18+ 🔞
А, ну это классика, ёпта! Смотри, тут всё просто, как божий день. Представь себе: твой фрагмент — это как мужик, который вышел на балкон покурить.
Пока он на балконе и виден соседям — это onResume(). Все видят, машут, кричат «Привет!».
А вот onStop() — это когда он, сука, зашёл с балкона обратно в квартиру и шторы задёрнул. Его уже нихуя не видно! Соседям хоть глаза выколи — они его не увидят. Он ещё жив, дышит, может телевизор смотреть, но для внешнего мира его, блядь, не существует.
Так и тут. Как только система вызывает onStop(), значит твой UI уже накрылся медным тазом с точки зрения видимости. Активность ушла в фон, или её перекрыло что-то полноэкранное. Фрагмент-то ещё в памяти болтается, не уничтожен, но пользователь его уже не лицезреет.
override fun onStop() {
super.onStop()
// UI больше не видна, но фрагмент еще не уничтожен
}
Вот смотри на код. Комментарий не врёт. В этот момент можно, например, тяжёлые анимации остановить или датчики какие отписаться, потому что показывать-то уже нечего.
А если тебе нужно среагировать на самое первое помутнение видимости — типа когда поверх фрагмента полупрозрачное окно вылезло — то это уже onPause(). Это как наш мужик на балконе не ушёл, но ему в лицо дым от шашлыков с нижнего этажа попёр. Виден ещё, но уже не так чётко.
Короче, запомни: onStop() = полная невидимость. Если в этом методе пишешь логику, которая зависит от того, что юзер что-то видит — ты, чувак, идёшь по охуенно тонкому льду. Потому что в этот момент он уже нихуя не видит.