分散アプリケーションの.apkにデータベースを埋め込む[アンドロイド]

StackOverflow https://stackoverflow.com/questions/3013021

質問

私の質問は、私は非常に簡単だと思うですが、私は答えはなると思いません... 私はそれが適切に実行させるために自分のアプリケーションを持っているために、コンテンツのかなり多くを持っている、と私は、データベース内でのすべてを置くことを考えています、とのアプリケーション内で埋め込まデータベースの中でそれを配布します市場。 唯一の問題は、私はそれを行う方法の見当がつかないということです。 それはアプリケーションデータベースを再生成する方法をアプリケーションに利用するために、私は私のデータベースの内容とEclipseのDDMSからファイル.DBを抽出できることを知っている、と私は、私は自分のアプリケーションの資産フォルダに配置する必要があるとしたが、 ? あなたはいくつかのコードやヘルプへのリンクを持っている場合、それは素晴らしいことです。 おかげ

役に立ちましたか?

解決

さて、あなたはあなたの資産/ディレクトリにある.dbファイルを入れて、所定の場所に、あなたが最初に起動したときに、それをコピーすることができ、あなたが求めているものを達成するためのアプリ.....

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は、特に大規模な作ることは、通常は最初の場所でそれをインストールするから人々を躊躇します。

他のヒント

上記の使用のアプローチを、代わりにDBファイルを配布するのは、サーバーのどこかにそれを置く:あなたはミドル・オブ・ロードソリューションを実装することができます。私の経験になったファイルでは処理時間の10%だけ、それの残りの部分はデシベル

に画像を解析し、シリアライズされています
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top