我正在使用同步适配器在我的移动设备与中央服务器之间进行同步。当我在设备上的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;
}
答案 0 :(得分:0)
你可以查看这篇SO帖子
Android BroadcastReceiver, auto run service after reboot of device
Dixit Patel
并在收到广播接收器后开始服务。在此,您必须注册android.intent.action.BOOT_COMPLETED
才能接收广播