3

最初の起動時にアプリを高速化する必要があります。今のところ、解析するJSONファイルを使用し、最初の起動時にデータベースにデータを挿入します。問題は、大量のデータがあるため、これには長い時間がかかる可能性があることです (Samsung spica :/)。

別の方法を考えていました。最初のsqlite dbを生成するアプリが 2 つあり、それをメイン アプリのリソースにコピーします。したがって、JSON ファイルを埋め込む必要はもうありませんが、代わりに db を埋め込みます。私はこれが可能であることを知っており、その方法を知っています。

問題は、デバイスまたは Android API のバージョンによって DB が異なる可能性があるかどうかです。このデータベースをコピーすると、すべてのデバイスに正確なコピーが含まれます。これは問題ですか、データベースが X デバイス / API バージョンと互換性がないというリスクはありますか?いくつかの変更) ?

お時間をいただきありがとうございます。

4

5 に答える 5

2

「新しい」バージョンの SQLite で導入されたいくつかの機能を使用したい場合があります。たとえば、外部キーのサポートは SQLite バージョン 3.6.19 (API レベル 8、Froyo) で導入されましたが、トリガーは、Android のすべてのバージョンでサポートされています。

したがって、データベースに外部キー制約がある場合、それらは API レベル <8 の Android では機能しません。

他に違いはないと思います。

于 2012-08-01T13:41:33.493 に答える
1

すべてのデバイスで使用される最小バージョンである sqlite 3.0 を使用している場合、大きな違いはないと思います。ただし、外部キーなどの SQLite バージョン 3.6.19 の機能を使用している場合、バージョン 3.0 を実行しているデバイスでは機能しません。

于 2012-08-13T10:43:33.570 に答える
0

データが変更されない場合は、すべてのデータを含むxmlファイル(またはjson)を使用できます。そして、最初の起動時に、AsyncTaskを使用してsqliteデータベースにデータを入力します。

于 2012-08-01T14:56:26.497 に答える
0

より高速な処理を行う考えがありますが、次の基準が要件を満たす必要があります

1) データベースは静的ですか?

2)または動的です。変更された行のデータベースを変更します。

データベースが動的な場合は、最初にアプリでデータベースをプリロードし、サーバーで変更が発生したときにデータベースを更新します。

私はそれがあなたを助けるかもしれないと思う.

于 2012-08-02T05:29:28.583 に答える
0

次のことを行うプロジェクトがあります: - 開始時 (または更新ボタンを押す) に、wcf サービスで新しいデータ (4 つのテーブル、約 1600 ~ 2000 のテーブル エントリの合計) をチェックします。・サービスがテーブルごとにcvsファイルを生成し、データを圧縮(gzip) ・androidアプリが圧縮ファイルをダウンロードし、その中のデータを抽出 ・その後、csvファイルを処理 全体で約2秒(ダウンロード含む)古いデバイス (1 コア、1 GHz)。

バックグラウンドでタスクを実行するためにサービスを使用することをお勧めします。もし私があなただったら、JSON の代わりに cvs を使用します。たくさんのデータを持っています。

サービスで情報処理を実行し、データベースに挿入することには、いくつかの重要な利点があります。 - ユーザーがホーム キーを押した場合、サービスはバックグラウンドで作業を続行できます。彼女はあなたのアプリが機能していることを知っています.Androidは別のプロセスでサービスを実行することを可能にします.メインアプリケーションが完全に(ユーザーによって、または他の何かのためにメモリが必要なときにシステムによって)強制終了された場合,この方法でまだあなたのdbのことをすることができます。- 別のプロセスで実行することの欠点は次のとおりです - それは別の vm であるため、より多くのメモリを消費します - データベースへのアクセスで問題が発生する可能性がありますが、最初の実行時にデータベースを満たすためだけに使用するため、問題ありません これについて詳しく読むことができますここ(アンドロイド:プロセス):http://developer.android.com/guide/topics/manifest/service-element.html#proc

要約 - json の代わりに cvs を使用します - データベースを埋めるためにサービスを使用します - 別のプロセス サービスを使用する場合 (テーブルから count(*) を選択し、それが一致するかどうかを確認します) db で予想される行数)。

于 2012-08-10T09:32:59.177 に答える