0

AndroidタブレットでSQLiteDBを設定および作成する方法についてのphonegapチュートリアルに従いました。DBはjavascriptで記述され、アプリケーションはHTML5で記述されています。

DBは最終的に非常に大きくなりました(データの入力/追加のみで1200行)私の懸念の1つは、index.html(フロントページ)またはcatalog.htmlというページにアクセスするたびにDBが入力されることです。これはメモリや時間などの問題ですか?アプリケーションは、実行中に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ファイルにのみ「リンク」するのに役立ちますか?奇妙なことに、DBファイルからデータを取得するページがもう1つありますが、「成功して生成された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を使用しています。jQtouchなどのhtml5アプリケーションのフレームワークを確認することをお勧めします。これは、「ネイティブ」iphoneアプリでの相互作用を模倣しています。私のポイントでは、jQtouchを使用すると、index.htmlを1回だけロードしてから、他のページをjavascriptでロードします。ajaxを使用してコンテンツをロードし、ページの構造のみをすべてindex.htmlに含めることができます。

ロード時間やメモリリークに問題はありません。ここでjQtouchを見てください。

http://www.jqtouch.com/

幸運を!

于 2012-05-08T09:21:44.233 に答える