Посты канала Мобильная разработка

сначала новые

#4870Фото
Просмотры634−41%к среднему
Пересылки3
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
6 ч565
18 ч634
  1. Через 6 часов565
  2. Через 24 часа634
  3. Всего сейчас634
#4869Фото
Просмотры750−31%к среднему
Пересылки2
Реакции2
Комментарии0
#4868Видео
Просмотры896−17%к среднему
Пересылки3
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
6 ч534
18 ч622
30 ч896
  1. Через 6 часов534
  2. Через 24 часа896
  3. Всего сейчас896
#4867Видео
Просмотры930−14%к среднему
Пересылки3
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
12 ч746
36 ч930
  1. Всего сейчас930
#4866Видео
Просмотры890−18%к среднему
Пересылки6
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
5 ч453
17 ч581
29 ч890
  1. Через 6 часов453
  2. Через 24 часа890
  3. Всего сейчас890
#4865Фото
Просмотры957−12%к среднему
Пересылки3
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
12 ч614
36 ч873
72 ч957
  1. Всего сейчас957
#4864Видео
Просмотры937−13%к среднему
Пересылки4
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
30 ч718
78 ч937
  1. Через 24 часа718
  2. Всего сейчас937
#4863Фото
Просмотры913−16%к среднему
Пересылки2
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
36 ч765
72 ч913
  1. Всего сейчас913
#4862Видео
Просмотры979−10%к среднему
Пересылки4
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
54 ч893
78 ч979
  1. Всего сейчас979
#4861Видео
Просмотры956−12%к среднему
Пересылки1
Реакции—
Комментарии0
Динамика просмотровСкрыть динамику

Рост просмотров

Часов после публикации

Показать таблицей
Часов после публикацииПросмотры
0 ч0
60 ч944
72 ч956
  1. Всего сейчас956
#4860Видео
Просмотры974−10%к среднему
Пересылки4
Реакции—
Комментарии0
#4859Фото
Просмотры1 006−7%к среднему
Пересылки3
Реакции—
Комментарии0
#4858Фото
Просмотры1 031−5%к среднему
Пересылки2
Реакции—
Комментарии0
#4857Фото
Просмотры1 032−5%к среднему
Пересылки2
Реакции3
Комментарии0
#4856Фото
Просмотры1 106+2%к среднему
Пересылки6
Реакции1
Комментарии0
#4855Видео
Просмотры1 118+3%к среднему
Пересылки4
Реакции0
Комментарии0
#4854Текст
Просмотры1 259+16%к среднему
Пересылки2
Реакции—
Комментарии0
#4853Текст
Просмотры1 347+24%к среднему
Пересылки2
Реакции1
Комментарии0
#4852Текст

Счётчик в DataStore увеличивайте внутри updateData Прочитать значение, прибавить единицу в интерфейсе, записать результат — между этими действиями другое обновление может изменить тот же счётчик. Если записать число из старого состояния экрана, прибавление потеряется. У Jetpack DataStore преобразование выполняют внутри updateData. В официальном примере с JSON новый объект строится из переданного текущего состояния: settings.copy(exampleCounter = settings.exampleCounter + 1). Чтение, изменение и запись образуют одну атомарную транзакцию. Для Preferences есть и suspend-функция edit. Эта гарантия требует правильного использования: один активный экземпляр DataStore на файл в одном процессе и неизменяемый тип данных. Для нескольких процессов нужен MultiProcessDataStore, доступный с версии 1.1.0. Гарантия не распространяется на общую транзакцию с сервером или другим файлом. Для сложных связанных данных уместнее Room.

Открыть в Telegram
Просмотры1 353+25%к среднему
Пересылки3
Реакции—
Комментарии0
#4851Текст

Форма во Flutter может пережить завершение фонового процесса Пользователь заполнял форму, переключился в другое приложение, а Android освободил память и завершил фоновый процесс. При возвращении экран создаётся заново. Для незавершённого ввода и выбранной вкладки у Flutter есть state restoration. Восстановление подключается по уровням: restorationScopeId у приложения, restorationId у поддерживающих его виджетов. Собственное состояние хранят в RestorableProperty и регистрируют в restoreState через RestorationMixin. Данные передаются движку по мере изменений, а не только в последний момент перед завершением процесса. Навигацию нужно настроить отдельно. При прямой работе с Navigator стек восстанавливают через методы вроде restorablePush. А важный черновик всё равно стоит сохранять в постоянном хранилище: объём instance state на Android ограничен, и restoration не даёт гарантии для любого принудительного закрытия приложения. Проверка через hot reload также не заменяет тест восстановления после завершения процесса.

Открыть в Telegram
Просмотры1 418+31%к среднему
Пересылки4
Реакции2
Комментарии0
#4850Текст

Смена id отменяет SwiftUI task, но не останавливает любой код внутри В поиске пользователь уже дописал запрос, а обработка предыдущего ещё идёт. Модификатор .task(id: query) связывает задачу со значением запроса: при изменении id SwiftUI отменяет старую задачу и создаёт новую. Само значение должно быть Equatable. Базовый механизм доступен с iOS 15. Дальше действует правило Swift Concurrency: отмена кооперативная. Произвольная функция может продолжить работу, если сама не проверяет отмену и не вызывает код, который на неё реагирует. Для собственной долгой обработки есть Task.checkCancellation(), бросающий ошибку при отмене. Поэтому при разборе такого поиска полезно проследить весь путь запроса до обновления экрана. Если тяжёлая обработка игнорирует отмену, один .task(id:) этого не исправит. Он также не гарантирует защиту от всех устаревших результатов.

Открыть в Telegram
Просмотры1 363+26%к среднему
Пересылки3
Реакции—
Комментарии0
#4849Текст
Просмотры1 380+27%к среднему
Пересылки7
Реакции0
Комментарии0
#4848Фото

Google открыл публикацию Android-игр для автомобильных экранов с запуском только на стоянке Игры для Android Auto и Android Automotive OS вышли из беты: теперь разработчики могут отправлять их в открытое тестирование и в рабочую публикацию Google Play. В руководстве по адаптации разобраны настройки манифеста и требования к поведению. Для Android Auto поддержка игр начинается с Android 15; для Automotive OS отдельно объявляется автомобильный форм-фактор. Игры относятся к приложениям для стоянки. При начале движения система блокирует их интерфейс, а разработчик должен остановить звук и исключить его повторный запуск в движении. После возвращения в игру состояние нужно восстановить как можно ближе к прежнему. Ещё понадобятся адаптация под широкие и вертикальные экраны и проверка качества. Android Auto тестируют через Desktop Head Unit, Automotive OS — через соответствующий эмулятор. Одних изменений манифеста для публикации недостаточно.

Открыть в Telegram
Просмотры1 419+31%к среднему
Пересылки3
Реакции2
Комментарии0
#4847Фото

Typed throws в Swift позволяет проверять обработку конкретного типа ошибок при компиляции Обычный throws сообщает, что функция может завершиться ошибкой, но не ограничивает её конкретным типом. В catch приходится выяснять, что именно прилетело. В разборе typed throws функция объявляет throws(CatError). Когда тип сохраняется до обработчика, catch получает CatError, и компилятор проверяет полноту switch по вариантам перечисления. Однако конкретный тип можно потерять. Например, если внутри do вызываются функции с разными типами ошибок, результат может расшириться до any Error. Типизация замыканий тоже влияет на то, что дойдёт до вызывающего кода. У публичного API есть цена: расширение набора ошибок затрагивает клиентов с исчерпывающей обработкой. Поэтому точный тип полезен там, где этот контракт действительно нужен. Автоматически заменять им все обычные throws не стоит.

Открыть в Telegram
Просмотры1 338+24%к среднему
Пересылки5
Реакции—
Комментарии0