我刚刚开始使用Android编程,几乎已经运行了SampleSync程序。有一个我无法理解的错误 - 在'AbstractThreadedSyncAdapter'模块中,就在它运行结束时。
在下面的代码段中,代码试图“释放”“提供者”。它尝试执行该行并始终抛出NullPointerException。
对我可以尝试的事情有任何想法 - 我非常接近! :)
约翰
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;
}
}
答案 0 :(得分:0)
该行抛出NullPointerException是没有意义的,因为如果provider为null则不会执行它。例外必须在不同的行上。
c99 blog上有一个关于同步适配器的好教程,其描述比Google SampleSync示例好很多。我建议你给它一个阅读。