同步适配器:在设备关闭后再打开时,如何强制重新同步失败的同步?

时间:2016-11-19 11:27:49

标签: android android-syncadapter

我正在使用同步适配器在我的移动设备与中央服务器之间进行同步。当我在设备上的sqlite数据库中添加记录时,我正在使用requestSync与服务器同步,它运行良好。即使没有与服务器的互联网连接,我也可以通过捕获ParseException并在SyncAdapter的'onPerformSync中递增syncResult.stats.numParseExceptions来强制重新同步。

我的问题是如果我在同步完成之前关闭了我的设备。我再次打开设备时未尝试同步。当我再次打开设备时,我该怎么做才能确保同步?

我的代码:

UI活动 - >在保存按钮上单击事件处理程序

ContentResolver.requestSync(createDummyAccount() DatabaseContract.AUTHORITY , settingsBundle);

// SyncAdapter - >> onPerformSync()

Client client = ClientBuilder.newClient();

client.property(ClientProperties.CONNECT_TIMEOUT, 6000);

WebTarget target = client.target(SERVICE_URL);

try {
     String callResult = target
     .request(MediaType.APPLICATION_XML)
     .put(Entity.entity(form,
        MediaType.APPLICATION_FORM_URLENCODED_TYPE),
        String.class);
    System.out.println("response: " + callResult);
} catch (ProcessingException pe) {
    syncResult.stats.numIoExceptions++;
    syncResult.delayUntil = 60;
}

1 个答案:

答案 0 :(得分:0)

你可以查看这篇SO帖子

Android BroadcastReceiver, auto run service after reboot of device

Dixit Patel

并在收到广播接收器后开始服务。在此,您必须注册android.intent.action.BOOT_COMPLETED才能接收广播