我正在使用 AbstractThreadedSyncAdapter 将我的 Android 手机中的一些数据与服务器同步。当用户使用手机应用程序登录时,我执行第一次同步,以便用户在开始使用我的应用程序之前在手机中准备好所有数据。我用 eclipse 的模拟器对其进行了测试,它工作正常,但是当我在手机上测试它时,函数 onPerformSync 需要很长时间才能被调用(比如一分钟或更长时间)。
这是我在 Authenticator Activity 中使用的代码:
Bundle params = new Bundle();
params.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
params.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false);
params.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false);
ContentResolver.addPeriodicSync(account, "com.pfc.authority", params, 30);
ContentResolver.setSyncAutomatically(account, "com.pfc.authority", true);
ContentResolver.requestSync(account,"com.pfc.authority",params);
我的 AbstractThreadedSyncAdapter 的构造函数被调用得非常快,但是我的应用程序仍然在等待同步完成,就像我说的 onPerformSync 函数需要太多时间才能启动,我不知道为什么我的手机需要太长时间才能调用它。
这是日志(为我的应用程序过滤)。我将 Log.d 放在构造函数和 onPerformSyn 函数中:
11:47:49 SweetSyncAdapter: constructor
11:48:01 SweetSyncAdapter: constructor
11:48:36 SweetSyncAdapter: onPerformSync
我查看了完整的日志(没有过滤它),在执行我的应用程序时没有错误或警告,但我看到还有另一个同步正在进行(音乐、日历等)。这可能是问题吗?
我用两个不同的 ROM(2.3.6 JVU 和现在的 ICS)对其进行了测试,结果是一样的。有人知道为什么会这样吗?
PD:现在我看到注销也会发生同样的情况(我在用户注销时执行同步),并且手机已经等待调用 onPerformSync 5 分钟)。