6

私の質問は非常に単純だと思いますが、答えはそうではないと思います...アプリケーションを適切に実行するために必要なコンテンツが非常に多く、それらすべてをデータベースに組み込み、市場のアプリケーションと一緒に組み込みデータベースで配布します。唯一の問題は、それを行う方法がわからないことです。データベースのコンテンツを使用して Eclipse DDMS からファイル .db を抽出できることはわかっています。それをアプリケーションのアセット フォルダーに配置する必要があると思いますが、アプリケーションでそれを使用してアプリケーション データベースを再生成する方法を教えてください。 ? コードやヘルプへのリンクがあれば、それは素晴らしいことです。ありがとう

4

2 に答える 2

12

求めていることを実現するには、.dbファイルをassets /ディレクトリに配置し、アプリを初めて起動するときにその場所にコピーします。

final String DB_DESTINATION = "/data/data/YOUR_PACKAGE_NAME/databases/MyDatabaseFile.db";

// Check if the database exists before copying
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {

    // Open the .db file in your assets directory
    InputStream is = getContext().getAssets().open("MyDatabaseFile.db");

    // Copy the database into the destination
    OutputStream os = new FileOutputStream(DB_DESTINATION);
    byte[] buffer = new byte[1024];
    int length;
    while ((length = is.read(buffer)) > 0){
        os.write(buffer, 0, length);
    }
    os.flush();

    os.close();
    is.close();
}

ここで、「initialiseDatabase」は、アプリが初めて起動されたかどうかを示すフラグです。

ただし、大量のデータの保存を検討している場合は、前述のとおり、APKファイルを肥大化させないようにし、アプリの実行後にインターネット接続を使用して(ホストされたサーバーから)データベースレコードをダウンロードすることを強くお勧めします。発売。このようにして、ユーザーがアプリの使用を開始するのを長時間待っている理由を示す進行状況バーを表示できます。APKを特に大きくすると、通常、そもそもAPKをインストールすることを思いとどまらせます。

于 2010-06-10T09:35:27.377 に答える
1

中途半端なソリューションを実装できます。上記のアプローチを使用しますが、db ファイルを配布する代わりに、サーバーのどこかに配置します。私の経験では、ファイルの取得は処理時間の 10% にすぎず、残りは画像の解析とデータベースへのシリアル化です

于 2010-07-29T04:22:49.720 に答える