Android 如何在PhoneGap应用程序中计划数据同步,检索JSON

Android 如何在PhoneGap应用程序中计划数据同步,检索JSON,android,ios,json,cordova,timer,Android,Ios,Json,Cordova,Timer,我正在构建一个PhoneGap应用程序,目前已经设置了一些数据源,这些数据源包含我从中提取的JSON提要,以便用数据填充我的应用程序。现在,它只在应用程序第一次运行时提取一次数据 我想在每次应用程序首次打开时下载数据,如果它保持打开状态超过15分钟,它会再次更新。可以使用URL中的最后一天来查询json提要,因此它只提取已更改的数据 建议采取什么措施,以及如何检查手机上的WiFi/数据连接,如果没有,它会悄无声息地出现故障 下面是获取提要的当前函数的代码 function downloadFil

我正在构建一个PhoneGap应用程序,目前已经设置了一些数据源,这些数据源包含我从中提取的JSON提要,以便用数据填充我的应用程序。现在,它只在应用程序第一次运行时提取一次数据

我想在每次应用程序首次打开时下载数据,如果它保持打开状态超过15分钟,它会再次更新。可以使用URL中的最后一天来查询json提要,因此它只提取已更改的数据

建议采取什么措施,以及如何检查手机上的WiFi/数据连接,如果没有,它会悄无声息地出现故障

下面是获取提要的当前函数的代码

function downloadFileError(evt) {
console.log('downloadFileError: ');
console.log(evt.target.error);
}

function downloadFile(ep) {
window.requestFileSystem(
    LocalFileSystem.PERSISTENT, 
    0, 
    function onFileSystemSuccess(fileSystem) {
        fileSystem.root.getFile("dummy.json", {
            create: true,
            exclusive: false
        }, 
        function gotFileEntry(fileEntry) {
            var filename = cordova.file.dataDirectory + 'assets/json/' + ep + '.json';
            var fileTransfer = new FileTransfer();
            fileEntry.remove();
            console.log('looking at ' + filename);
            fileTransfer.download(
                encodeURI("http://www.myURL.com/theApp?ep=" + ep), 
                filename,
                    function(theFile) {
                        console.log("download complete: " + theFile.toURL());
                    }, 
                    function(error) {
                        console.log("DLERR: src=" + error.source + " t=" + error.target);
                    }
            );
        }, 
        function(evt) {
            console.log(evt);
            console.log('fn: ' + filename);
        }
        );
    }, 
downloadFileError);
}

function downloadDynamicPages() {

var deferred = $.Deferred();

var pages = ['setOne','setTwo','setThree','setFour','setFive','setSix'];
var cnt = 0;
var total_pages = pages.length; 

//checkConnection();

$.each(pages,function(k,v) {

    console.log('looking at ' + v);
    downloadFile(v);
    cnt++;
    if(cnt >= total_pages) {
        deferred.resolve('all done with files');
    }
});


return deferred.promise();

}

在这些问题的任何一个方面给予帮助都会对我有很大帮助。如果需要,我可以回答任何问题。谢谢Stack。

我有类似的要求,但我使用Signalr,这样当服务器数据库中有任何新数据时,Signalr服务器会调用所有已登录的客户端,以便客户端可以立即获取新数据。如果客户端在此特定时刻处于脱机状态,几秒钟后,此客户端再次联机,则客户端将在信号器的“OnConnect”事件期间获取所有最新数据。感谢您的评论。我正在寻找一种方法来把它安排在一个时间表上。设置超时或类似的设置。