- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我能找到的所有示例 SyncService 代码似乎都未完全或不必要地同步。
下面的典型代码在创建单例实例时使用静态锁。
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% 同步。
最佳答案
我有同样的问题,我相信答案是这个示例代码中的同步是错误的。是的 onCreate
总是在主线程上调用,所以那里不需要同步。此外,即使多个线程可以同时调用 onBind
,该方法在 onCreate
完成之前不会被调用。因此,在此示例代码中根本不需要任何同步。
关于java - 示例 SyncService 中 sSyncAdapterLock 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202072/
有人可以解释一下为什么 SyncService 在创建后 120 秒后就被销毁了吗? 另外一个奇怪的事情是,SyncAdapter 方法 onPerformSync 在 SyncService 被销毁
我正在使用 Android 同步服务将我的 ParseObjects 从云与 localDatastore 同步,但是当我调用 ParseObject.pinAll(...); 时没有抛出异常,但稍后
我们在我的应用程序中使用 OneSignal Native SDK 3.4 版,有时应用程序会崩溃,崩溃日志如下: "Signal Catcher" daemon prio=5 tid=3 Runna
我能找到的所有示例 SyncService 代码似乎都未完全或不必要地同步。 下面的典型代码在创建单例实例时使用静态锁。 public class SyncService extends Servic
Xcode 默认为实体和属性设置 syncable="YES",例如, $ cat AppName/AppName.xcdatamodeld/AppName.xcdatamodel/contents
我是一名优秀的程序员,十分优秀!