如何确保Android自动运行同步适配器?

时间:2015-12-23 16:24:28

标签: android android-syncadapter

我正在尝试了解如何使用同步适配器。我已经完成了官方的android教程,虽然我现在有一个基本的工作示例,但我仍然不清楚它的一些功能。特别是我不确定教程的介绍页面中的以下陈述:

  

[同步适配器]允许您根据各种条件自动执行数据传输,包括数据更改,已用时间或一天中的时间。此外, 系统会添加无法运行到队列的传输,并在可能的情况下运行它们。

系统认为转移失败的原因是什么?对我的服务器的失败请求会计数吗?如果是这样的话,我怎么能让系统知道我的更新失败了?

  

系统仅在设备具有网络连接时运行数据传输。

我认为这意味着如果没有网络,我的同步适配器将不会被调用。但如果是这样的话那什么时候会被召唤?

  

您的数据传输也会与其他应用的数据传输一起安排。

这是自动发生还是我需要更改任何设置让系统知道我希望这种情况发生?我将如何测试这种情况?

来源:http://developer.android.com/training/sync-adapters/index.html

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码

设置自动同步
    Account newAccount = new Account(ACCOUNT,ACCOUNT_TYPE);
    mResolver = getContentResolver();
    // Turn on automatic syncing for the default account and authority
    ContentResolver.setSyncAutomatically(newAccount, AUTHORITY, true);

但您需要在清单文件中添加此权限,

<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>

我为特定秒添加定期同步,

第三个参数表示定期同步的秒数

ContentResolver.addPeriodicSync(newAccount, AUTHORITY, Bundle.EMPTY, 90);

官方文件 - http://developer.android.com/reference/android/content/ContentResolver.html#addPeriodicSync%28android.accounts.Account,%20java.lang.String,%20android.os.Bundle,%20long%29