TGViewer
Yandex for Mobile Yandex for Mobile @yandexformobile · 5.03K subscribers
Post #625 2.4K
🎦 Андроиду 18 лет. Какие странности первой версии всё ещё с нами?

В этот день в 2008 году вышел Android 1.0 SDK. С тех пор изменились язык и несколько подходов к архитектуре. Зато некоторые решения из самого первого Android пережили всё и зачастую усложняют жизнь разработчикам. Мы поговорили об этом с коллегами, и они вспомнили три примера: 

1️⃣ Activity и поворот экрана

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

🔮Сегодня ViewModel помогает пережить смену конфигурации, но не уничтожение процесса. Чтобы его восстановить, нужны сохранённое состояние и постоянное хранилище для важных данных. Android 17 сократил число поводов для пересоздания, но сам механизм остался.

2️⃣ Context и утечка памяти

Нужна строка? Передай Context. Нужен системный сервис? Передай Context. Сохранил его в синглтоне? Если это Activity, заодно сохранил весь экран и всё, что он удерживает. В итоге пользователь давно ушёл, а экран всё ещё с нами. Очень трогательная утечка памяти.

🛍 Лечение прежнее. Нужно учитывать время жизни объектов и использовать applicationContext для долгоживущих зависимостей там, где он подходит. Для UI контексты не взаимозаменяемы, имеют значение окно, тема и конфигурация. 

3️⃣ TextView.setText(18) и проблема с числами

Вот одна строка, в которой можно одновременно поздравить Android с днём рождения и воспроизвести проблему — его ровесницу: 


textView.setText(18)


Собственно, вместо поздравления мы получим: Resources.NotFoundException. Перегрузка setText(int) принимает ID строкового ресурса. Обычное число прекрасно подходит ей по типу. 

🟰 В итоге, если мы хотим показать возраст, нужно передавать текст:


textView.text = 18.toString()


🎉 С днём рождения тебя, Android! Спасибо за обратную совместимость. Особенно за совместимость с ошибками, которых нужно избегать уже 18 лет.

Подписывайтесь:
💬 @Yandex4Mobile
📹 @YandexforMobile
  • 🎉 34
  • ❤ 16
  • 😁 5
  • 👍 2
  • 🔥 2
More from @yandexformobile
  1. Oct 7, 2026✨ Что я успела сделать за 5 лет в Яндексе Привет, с вами Владислава Вакуленко, руководител…
  2. Oct 2, 2026🤖 AI в мобильной разработке: плюсы, минусы и прогнозы на будущее Писать код сегодня легко…
  3. Sep 17, 2026⚡️ Мобильный блиц про AI: отвечаем быстро и обязательно честно Мы узнали, что мобильные ра…
  4. Sep 13, 2026📺 «Нерешённые задачи» — премьера к празднику Сегодня, 13 сентября, мы отмечаем День прогр…
  5. Sep 10, 2026🤨 Почему Al-агенты тормозят и что с этим делать С вами Александр Иванов, разработчик моби…
  6. Sep 8, 2026⏭ Приручаем Paparazzi для проверки TalkBack Всем привет, это Владислав Шиляев, я разрабаты…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →