分散アプリケーションの.apkにデータベースを埋め込む[アンドロイド]
-
26-09-2019 - |
質問
私の質問は、私は非常に簡単だと思うですが、私は答えはなると思いません... 私はそれが適切に実行させるために自分のアプリケーションを持っているために、コンテンツのかなり多くを持っている、と私は、データベース内でのすべてを置くことを考えています、とのアプリケーション内で埋め込まデータベースの中でそれを配布します市場。 唯一の問題は、私はそれを行う方法の見当がつかないということです。 それはアプリケーションデータベースを再生成する方法をアプリケーションに利用するために、私は私のデータベースの内容と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は、特に大規模な作ることは、通常は最初の場所でそれをインストールするから人々を躊躇します。
他のヒント
あなたはミドル・オブ・ロードソリューションを実装することができます。私の経験になったファイルでは処理時間の10%だけ、それの残りの部分はデシベル
に画像を解析し、シリアライズされています