Android 未调用SyncAdapter onPerformSync
我正在开发一个离线第一个应用程序,它使用SyncAdapter将数据加载到Web服务器。基本上,使用greenDao库将数据保存到本地SQLite数据库中。每次添加或删除数据时,我都会调用Android 未调用SyncAdapter onPerformSync,android,android-syncadapter,Android,Android Syncadapter,我正在开发一个离线第一个应用程序,它使用SyncAdapter将数据加载到Web服务器。基本上,使用greenDao库将数据保存到本地SQLite数据库中。每次添加或删除数据时,我都会调用performSync()方法,使其与Web服务器同步。我的问题是,onPerformSync()从未被调用 我对这个概念还不熟悉,而且还在学习,所以有一些事情我还不清楚 我已经实现了StubAuthenticator,StubAuthenticatorService,StubProvider,SyncAdap
performSync()
方法,使其与Web服务器同步。我的问题是,onPerformSync()
从未被调用
我对这个概念还不熟悉,而且还在学习,所以有一些事情我还不清楚
我已经实现了StubAuthenticator
,StubAuthenticatorService
,StubProvider
,SyncAdapter
和SyncService
,就像在中一样
我不清楚accountType
。在文件中,他们说:
同步适配器框架要求每个同步适配器具有域名形式的帐户类型。框架使用帐户类型作为同步适配器内部标识的一部分。对于需要登录的服务器,帐户类型以及用户帐户将作为登录凭据的一部分发送到服务器。
如果您的服务器不需要登录,您仍然需要提供帐户类型。对于值,请使用您控制的域名。虽然框架使用它来管理同步适配器,但该值不会发送到服务器
我的服务器不需要登录,但我不确定传递给accountType
属性的内容
存储库
数据库功能类:
public class UnicornRepository {
private static String AUTHORITY = ".sync";
private static String ACCOUNT = "dummyAccount";
private static String ACCOUNT_TYPE = "unicorns.com"; //Not sure about this
private static UnicornRepository instance;
private Account mAccount;
private UnicornRepository(Context application){
mAccount = createSyncAccount(application);
}
public static UnicornRepository getInstance(Context application) {
if (instance == null) {
instance = new UnicornRepository(application);
}
return instance;
}
public void addUnicorn(Unicorn unicorn) {
//Add unicorn to database
sync();
}
public void deleteUnicorn(Unicorn unicorn) {
//Delete unicorn from database
sync();
}
private Account createSyncAccount(Context context) {
Account account = new Account(ACCOUNT, ACCOUNT_TYPE);
AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
accountManager.addAccountExplicitly(account, null, null); //returns false
return account;
}
private void sync() {
ContentResolver.requestSync(mAccount, AUTHORITY, Bundle.EMPTY);
}
}
accountManager.addaccountexplicit()
返回false,因此该帐户无法登录。是不是没有调用reasenonPerformSync()
?如果是,我应该传递什么到accountType
我不确定这是否是足够的信息。如果您需要更多信息,我可以添加它们
编辑:
我刚刚发现该帐户已登录,所以这不是问题所在。问题必须在其他地方。如果是,我应该向accountType传递什么-与
中的问题相同,但在同步适配器中我应该向它传递什么?这重要吗unicorns.com
不存在,我只是把它放在那里,因为我不知道实际放在那里的是什么。