Помогите!Почти там на Android синхронизации - PullRequest
1 голос
/ 28 февраля 2011

Я только начал работать с программированием на Android и почти запустил программу SampleSync. Есть одна ошибка, которую я просто не могу обойти - в модуле AbstractThreadedSyncAdapter, прямо в конце его запуска.

В приведенном ниже фрагменте код пытается «освободить» «провайдера». Он пытается выполнить эту строку и всегда выдает исключение NullPointerException.

Любые мысли о том, что я могу попробовать - я так близко! :)

John

SyncResult syncResult = new SyncResult();
ContentProviderClient provider = null;
try {
    provider = mContext.getContentResolver().acquireContentProviderClient(mAuthority);
    if (provider != null) {
        AbstractThreadedSyncAdapter.this.onPerformSync(mAccount, mExtras, mAuthority, provider, syncResult);
    } else {
        syncResult.databaseError = true;
    }
} finally {
    if (provider != null) {
        provider.release();
    }
    if (!isCanceled()) {
        mSyncContext.onFinished(syncResult);
    }
    // synchronize so that the assignment will be seen by other threads
    // that also synchronize accesses to mSyncThread
    synchronized (mSyncThreadLock) {
        mSyncThread = null;
    }
}

1 Ответ

0 голосов
/ 21 апреля 2011

Для этой строки не имеет смысла выдавать исключение NullPointerException, потому что оно не будет выполнено, если поставщик является нулевым. Исключение должно быть в другой строке.

В блоге c99 есть хорошее руководство по адаптерам синхронизации, которое описано намного лучше, чем пример Google SampleSync. Я рекомендую вам прочитать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...