Я создаю приложение для Android, такое как Android, которое должно работать, даже если связь данных временно потеряна.Общая архитектура для автономной синхронизации приложений для Android
Идея состоит в том, чтобы немедленно сообщить обо всех транзакциях на сервер, если доступно подключение к данным. Если нет, сохраните его локально в SQLite и синхронизируйте позже, когда станет доступно подключение.
Первый план состоял в том, чтобы сохранить отдельные транзакции в той же общей структуре БД, что и на сервере, но поскольку на сервере существует так много разных типов транзакций и отношений, это эффективно реплицирует всю структуру БД из сервер на самом телефоне.
Альтернативой этому является просто сохранение окончательных HTTP-запросов, которые используются для информирования сервера об изменениях. Преимущество такого подхода состоит в том, что ему требуется только одна таблица, просто хранить URL-адрес, запрашивать контент, метод и т. Д. Но могут быть некоторые вызовы, которые требуют выполнения кода для ответа, который будет реализован как анонимные внутренние классы , Единственная проблема с этим подходом, похоже, заключается в сериализации этих анонимных внутренних классов, чтобы их можно было загрузить из БД и выполнить даже после (возможного) перезапуска телефона.
Что было бы лучшим способом реализовать это? Вариант A или вариант B? И если вариант B, действительно ли возможно сериализовать и несериализировать анонимные внутренние классы (которые эффективно используются в качестве закрытий здесь)?