运行 应用程序未 运行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
     */
    ...
    }