我可以找到的所有示例SyncService代碼都顯示爲不完全或不必要地同步。示例SyncService中sSyncAdapterLock的用途是什麼?
下面的典型代碼在創建單例實例時使用靜態鎖。
public class SyncService extends Service {
private static final Object sSyncAdapterLock = new Object();
private static SyncAdapter sSyncAdapter = null;
@Override
public void onCreate() {
synchronized (sSyncAdapterLock) {
if (sSyncAdapter == null) {
sSyncAdapter = new SyncAdapter(getApplicationContext(), false);
}
}
}
@Override
public IBinder onBind(Intent intent) {
return sSyncAdapter.getSyncAdapterBinder();
}
}
來源:http://developer.android.com/training/sync-adapters/creating-sync-adapter.html
兩個有關此代碼的奇怪的事情是:
爲什麼鎖甚至需要?不是總是在主應用程序線程上調用onCreate()?
如果在onCreate()中需要鎖定,爲什麼不用這個鎖來訪問onBind()中的實例? FindBugs將其標記爲50%同步。
嘿,你得到了你的問題的答案?如果是的話請發帖 –