即使应用程序未运行,是否可以在后台运行SyncAdapter?我想更新sqlite数据库,如果服务器有任何变化,即使Android应用程序没有运行?
答案 0 :(得分:1)
此用例的最佳做法可能是:
1)每当数据发生变化时,从服务器触发Broadcast
。
2)从广播接收器启动服务。 (您可以通过广播发送一些额外的数据来区分广播操作)。
3)在已启动的服务中更新数据库。
如果上述解决方案不是一个选项,那么:
我建议您使用JobScheduler这是一种较新的推荐方法,用于此类用例。
虽然,您也可以使用SyncAdapters实现目标。但是现在,当您需要维护帐户或在其他应用之间共享AuthTokens或在SyncAdapter
中存储一些ContentProviders
特定数据时,通常会使用它们。
答案 1 :(得分:1)
您可以定期运行同步适配器。您的应用程序是否正在运行并不重要。它将始终定期执行同步。形成documentation,您可以像这样添加定期同步
ContentResolver.addPeriodicSync(
ACCOUNT,
AUTHORITY,
Bundle.EMPTY,
SYNC_INTERVAL);
然后在你的 onPerformSync 方法中做数据库的东西。
@Override
public void onPerformSync(Account account,Bundle extras,String authority,ContentProviderClient provider,SyncResult syncResult) {
/*
* Do your database stuff
*/
...
}