0

我遵循了关于如何在我的 android 平板电脑上设置和创建 SQLite DB 的 phonegap 教程。数据库是用 javascript 编写的,应用程序是用 HTML5 编写的。

数据库最终变得非常大(只有 1200 行填充/添加数据) 我担心的一个问题是,每次我访问我的 index.html(首页)或我称为 catalog.html 的页面时,它都会填充。这是内存或时间等问题吗?应用程序在运行时不会向数据库添加任何内容。有谁知道不让它每次都填充的方法?这是一些代码:

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 文件而不是所有其他页面是否有帮助?奇怪的是还有另一个页面从数据库文件中获取数据,但我没有得到“成功生成数据库和表!” 当我进入该页面时发出警报。

4

2 回答 2

3

每次启动应用程序时都会调用 populateDB 方法的代码结构方式。您将希望通过在 localStorage 中设置一个值来保护此调用。就像是:

function onDeviceReady() {
    if (localStorage.getItem("firstRun") == null) {
        db.transaction(populateDB, errorCB, successCB);
        localStorage.setItem("firstRun", false);
    }
}
于 2012-05-08T13:23:40.813 回答
0

我也使用 Phonegap 和相当大的数据库。我建议您查看 html5 应用程序的框架,例如 jQtouch,它模仿“原生”iphone 应用程序上的交互。就我而言,使用 jQtouch,您只需加载一次 index.html,然后使用 javascript 加载其他页面。您可以使用 ajax 加载内容,并且您的页面结构仅在 index.html 中。

我在加载时间或内存泄漏方面没有任何问题。在这里查看 jQtouch。

http://www.jqtouch.com/

祝你好运!

于 2012-05-08T09:21:44.233 回答