
Комментарии 6
Ну это цикл обработки сообщений, как в винде. А объекты типа класс окна есть в андроид?
Есть, он называется Activity
В винде объект типа класс окна уничтожается при повороте экрана монитора?
Я давно не занимаюсь виндой.
Такого нигде нет. Меняешь размеры окна программы, и ничего не прибивается.
В адндроиде сделали сразу проблему, которую решают из года в год разными методами. Каждый год новый способ борьбы с прибиванием активити при изменении размера окна программы. Сначала все сделали метод, который запускается, перед прибиванием. И в нем все переменные сохраняли в инстанс стэйт. А потом при запуске опять восстанавливали из него переменные. Оказалось через год, что в этот стэейт ничего непомещается. Не влезает. Через год придумали фрагменты. Это такие недоактивити. Которые можно было флажком сделать неубиваемыми.
Через год решили, что это слишком просто и пометили, как устаревший метод. На нем не попилить еще год денег. Работает же. Нужно что-то такое, что бы через год опять надо было бороться.
Стали придумывать архитектуру и слои. Подтянули ифоциган от дядюшки боба.
И в этих слоях все сохранять, потому что в влезает в инстанс стэйт все.
Началось. MVC, MVI, MVU, MVG. GVM. Каждый год новое.
Сделали в конце концов вьюмодель. Которая живет, как раньше жил фрагмент с флажком "не убивать меня". Флажек этот сделали устаревшим и отменили. Иначе же кто же будет вьюмодели юзать? Все ж во фрагменте неубиваемом можно хранить. Даже такие варианты фрагментов были, безголовые. Которые ничего не отображали. Просто хранили. Кстати. Никому в голову не пришло тупо держать синглтон без всяких извращений. Только архитектура. Только хардкор.
В итоге когда казалось, что все устаканилось. Появились отлаженные туториалы, колдабы, как надо все делать правильно через жопу. Пэйдж с Брином решили нахуй все похерить и вместо того, к чему разработчики десятилетиями привыкали ходить на голове, они просто все объявили устаревшим и поудаляли все кодлабы и заставили всех не на голове стоять, а кататься колесом. Руки за ноги и покатились. Придумали компоуз. Все. Все что было - все устарело. Кто это не прошел, тот не поймет о чем это. Когда яву на котлин сменили, это был удар. Но смена view с xml раскладками на компоуз функции - это ... ну, а чего. Монополисты. Делают, что хотят потому, что могут.
Последний случай. Есть такая фигня, как карусель. Ну, есть просто лази роу. Что бы с лева направо прокручивать картинки. А хочется крысоты. Что бы по краям экрана менялся размер картинки создавая иллюзию, что картинки по кругу крутятся.
Эта байда была доступна только внутри комерческих комманд как кноу хау. И в открытом доступе рабочих вариантов не было. И тут в очередном релизи Брин с Пэйджем осчастливили бедных программистов. Типа вот вам в компоузе карусель. Бесплатно. Пользуйтесь.
Ну, в простейшем варианте, который никому в жизни не нужен, оно работало. Допустим 10 картинок. И листай их сколько хочешь.
Но в жизни нам нужно в этот список добавлять картинки-удалять. Юзер хочет удалить или добавить картинку для аватара. Или фотку котика добавить. Ну, и все. Оно валилось.
Я подумал, может я чего-то не понял. Какой-то нюанс не заметил. В телеграм к разработчикам на компоузе. Блин... Ну, как в говно вляпался. Во-первых сразу понятно стало, что там народ ничерта непрограммирует на компоузе. Или по-крайней мере эту карусель ни разу не пробовали в боевом проекте. "А как ты его используешь. А что ты делаешь." Я просто спросил - кто-нибудь юзает его? Работает это? И никто прямо врать не стал "Я юзаю и у меня все работает". Пишут "все работает как написано". Но не говорят, что сами используют.
Потом нашли переписку в issue на гитхабе с этой каруселью. Долбодятлы "Вот! Пофиксили! Ты тупой не можешь найти!". Только там такой нюанс. Пофиксили в глубокой альфе. А стабилной ветке в релизе только спустя год. И так год в стабильном релизе эта карусель была не рабочая.
Это просто простой, понятный пример, как Брин и Пэйдж все делают. Там все такое.
Как работает UI в Android. Не все так сложно