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
を利用しないのには、何か意味があるのでしょうか?