SyncAdapterのonPerformSync()の引数ContentProviderClientについて
Creating a Sync Adapterを始め、SyncAdapterについて解説している記事では、AbstractThreadedSyncAdapterのサブクラスのコンストラクタで、
public SyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
mContentResolver = context.getContentResolver();
}
ContentResolverを取得してプライベートなメンバ変数として保持するのがセオリーとしていることが多いです。
しかし、onPerformSync()の呼び出しを見ると、
provider = mContext.getContentResolver().acquireContentProviderClient(mAuthority);
if (provider != null) {
AbstractThreadedSyncAdapter.this.onPerformSync(mAccount, mExtras, mAuthority, provider, syncResult);
} else {
syncResult.databaseError = true;
}
このタイミングでContentResolverを取得し、さらにContentProviderClientを獲得してonPerformSync()の引数に渡してくれます。コンストラクタでContentResolverを保持するより、引数providerを利用してContentProviderを操作した方が効率的なように思えます。
引数providerを利用しないのには、何か意味があるのでしょうか?