运行 应用程序未 运行ning 时后台的 SyncAdapter
run the SyncAdapter in the background when the application is not running
即使应用程序未 运行ning,是否可以在后台 运行 SyncAdapter?如果服务器有任何变化,我想更新 sqlite 数据库,即使 android 应用程序不是 运行ning?
这个用例的最佳实践可能是:
1) 只要数据发生变化,就会从您的服务器触发 Broadcast
。
2) 从广播接收器启动服务。 (您可以在广播中发送一些额外的数据以区分广播操作)。
3) 在启动的服务中更新数据库。
如果上述解决方案不可行,则:
我建议您使用 JobScheduler,这是针对此类用例的更新推荐方法。
不过,您也可以使用 SyncAdapter 实现您的目标。但如今,当您需要维护帐户或在其他应用程序之间共享 AuthTokens 或在您的 ContentProviders
.
中存储一些 SyncAdapter
特定数据时,通常会使用它们
您可以运行 定期同步适配器。您的应用是否 运行ning 并不重要。它将始终定期执行同步。形成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
*/
...
}
即使应用程序未 运行ning,是否可以在后台 运行 SyncAdapter?如果服务器有任何变化,我想更新 sqlite 数据库,即使 android 应用程序不是 运行ning?
这个用例的最佳实践可能是:
1) 只要数据发生变化,就会从您的服务器触发 Broadcast
。
2) 从广播接收器启动服务。 (您可以在广播中发送一些额外的数据以区分广播操作)。
3) 在启动的服务中更新数据库。
如果上述解决方案不可行,则:
我建议您使用 JobScheduler,这是针对此类用例的更新推荐方法。
不过,您也可以使用 SyncAdapter 实现您的目标。但如今,当您需要维护帐户或在其他应用程序之间共享 AuthTokens 或在您的 ContentProviders
.
SyncAdapter
特定数据时,通常会使用它们
您可以运行 定期同步适配器。您的应用是否 运行ning 并不重要。它将始终定期执行同步。形成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
*/
...
}