我按照一个关于如何在Android平板电脑上设置和创建SQLite数据库的phonegap教程。 DB是用javascript编写的,应用程序是用HTML5编写的。
数据库最终变得非常大(1200行只有填充/添加数据) 我担心的一个问题是,每当我进入index.html(首页)或我称为catalog.html的页面时,它都会填充。 这是内存或时间等问题吗?应用程序在运行时不会向DB添加任何内容。 有谁知道一种不让它每次都填充的方法? 以下是一些代码:
document.addEventListener("deviceready", onDeviceReady, false);
var db = window.openDatabase("DBfile", "1.0", "Afghanistan", 200000);
function onDeviceReady() {
db.transaction(populateDB, errorCB, successCB);
}
function populateDB(tx) {
(...
...
...)
}
function errorCB(tx, err) {
alert("Error processing SQL: "+err.code);
}
function successCB() {
alert("DB and tables generated with success!");
}
仅仅链接到index.html中的db-file而不是所有其他页面会有帮助吗? 奇怪的是,还有另一个页面从数据库文件中获取数据,但我没有得到“数据库和表生成成功!”当我进入该页面时发出警报。
答案 0 :(得分:3)
每次启动应用程序时,都会调用populateDB方法构建代码的方式。您将希望通过在localStorage中设置值来保护此调用。类似的东西:
function onDeviceReady() {
if (localStorage.getItem("firstRun") == null) {
db.transaction(populateDB, errorCB, successCB);
localStorage.setItem("firstRun", false);
}
}
答案 1 :(得分:0)
我使用Phonegap以及相当大的数据库。我建议你看一下html5应用程序的框架,比如jQtouch,它模仿“原生”iphone应用程序上的交互。就我而言,使用jQtouch,您只需加载index.html一次,然后使用javascript加载其他页面。您可以使用ajax加载内容,并且只在index.html中具有页面结构。
我在加载时间或内存泄漏方面没有任何问题。在这里看一下jQtouch。
祝你好运!