Приложение A#
Ключевые усложнения нативного SDK#
Несогласованные фоновые операции
REST-запрос стартовал вIO, запись в SQLite — вDefault, обратное уведомление пришло вmainThread. Малейшая задержка вызывала гонку и слепой интерфейс.Сложная транзакционность
Часть данных уже записана в БД, часть файлов загрузилась, а сеть оборвалась. Вручную откатить всё — отдельная задача со своими багами.Boilerplate
Room → Repository → UseCase → ViewModel → LiveData → Compose. Каждая сущность дублирует набор полей — правка трёх строк превращалась в десять правок и pull-request на 200 строк.Непредсказуемый офлайн
За очередь задач отвечали отдельные сервисы, и как только бизнес-логика усложнялась, синхронизация также усложнялась и появлялись трудноуловимые баги.Трудная интеграция железа
Камера, NFC, голосовой ввод требовали кастомных сервисов, контекстных разрешений и многословного DI-кода.
Детальное описание преодолённых усложнений#
Усложнение |
Решение, предоставляемое GlobalErp Mobile Framework |
|---|---|
Последовательное выполнение долгих операций блокирует UI |
Вся логика БД, сетевые вызовы и файловые операции выполняются в едином серверном потоке. Поток UI занят только отрисовкой. |
Race condition между результатами запросов |
Подписка осуществляется на |
Разрозненные реализации retry-логики для REST, файлов и локальной БД |
|
Сложность атомарного отката: часть данных уже записана, часть — нет |
|
Отмена длительной операции оставляет систему в непредсказуемом состоянии |
|
Навигация разбросана между |
Стек-ориентированная навигация ( |
Передача данных между слоями требует множества Mapper / Repository / ViewModel |
Цепочка SQL → RecordSet → Compose избавляет от промежуточных слоёв. Данные приходят в UI напрямую. |
Хрупкий офлайн-режим, необходимость писать очередь синхронизации |
Все изменения фиксируются локально; синхронизация с сервером оформляется единообразно через очереди задач и |
Сложная интеграция аппаратных функций (камера, NFC, QR-сканер) |
Плагины |
Несогласованная обработка аппаратной кнопки «Назад» и жестов |
|
Невозможность гарантировать порядок выполнения фоновых задач при навигации |
Задачи ( |
Отсутствие единых правил для тестирования |
|