Дифференциальная восходящая синхронизация для нескольких объектов с помощью Sync Adapter & Room DB

У меня есть несколько сущностей, сохраненных локально с Room DB. Я хочу синхронизировать их с сервером. Я реализовал адаптер синхронизации для него и запланировал синхронизацию. Теперь я хочу, чтобы попытаться синхронизировать только те объекты, которые имеют грязные данные. Каков механизм для достижения этого?

SyncUtil:

@TargetApi(Build.VERSION_CODES.FROYO)
    public static void CreateSyncAccount(Context context) {

        boolean newAccount = false;
        boolean setupComplete = PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREF_SETUP_COMPLETE, false);

        // Create account, if it's missing. (Either first run, or user has deleted account.)
        Account account = SyncAuthenticatorService.GetAccount(ACCOUNT_TYPE);
        AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
        if (accountManager.addAccountExplicitly(account, null, null)) {
            // Inform the system that this account supports sync
            ContentResolver.setIsSyncable(account, AUTHORITY, 1);
            // Inform the system that this account is eligible for auto sync when the network is up
            ContentResolver.setSyncAutomatically(account, AUTHORITY, true);
            // Recommend a schedule for automatic synchronization. The system may modify this based
            // on other scheduled syncs and network utilization.
            ContentResolver.addPeriodicSync(account, AUTHORITY, new Bundle(), SYNC_INTERVAL);
            newAccount = true;
        }

SyncAdapter:

override fun onPerformSync(account: Account, extras: Bundle, authority: String, provider: ContentProviderClient, syncResult: SyncResult) {

    pref = PreferenceManager.getDefaultSharedPreferences(context)

    Log.e(TAG, "Beginning network synchronization")

    upwardQuizAttempts()
    upwardStudents()
    upwardAttendances()

0 ответов

Другие вопросы по тегам