1

ほとんどのアプリで共通のデータベースを使用しています (複数のアクティビティと複数のフラグメントで構成されています)。これはかなり標準的だと思うので、より一般的な質問をしています。このデータベースを追跡するための「最良の」方法 (およびその理由) は何ですか?

私はヘルパー クラスで静的変数を使用することを計画していました (アクティビティのライフサイクルについての私の理解が限られているため、メイン アクティビティは後で無効になる可能性があるため、そのままにしておくのは安全ではありません)。しかし、別のオプションは、単に AsyncTask を使用して、必要なたびにデータベース参照を「新鮮」に取得することです (これが私が初めて行っている方法です)。エクストラを使用して送信できるとは思いませんし、シリアル化可能にするためのトリックも知りません。

私が見逃している他のオプションはありますか?アプリケーションの使用についての言及を見たことがありますが、私はそれらに慣れていません。

4

1 に答える 1

3

ヘルパークラスで静的変数を使用することを計画していました

それ、またはContentProviderデータベースのラッパーは、2 つの典型的なアプローチです。

アクティビティのライフサイクルに関する私の限られた理解からすると、メインのアクティビティが後で核攻撃を受ける可能性があるため、そこに残すのは安全な場所ではありません

さらに、複数のアクティビティがあるため、データベースを 1 つのアクティビティで保持することは、他のアクティビティがアクセスできないため、特に有用ではありません。

しかし、別のオプションは、単に AsyncTask を使用して、必要なたびにデータベース参照を「新鮮」に取得することです (これが私が初めて行っている方法です)。

それは良い考えではありません。SQLiteDatabase組み込みのスレッド同期を機能させるには、 の 1 つのインスタンスが必要です。

エクストラを使用して送信できるとは思いませんし、シリアル化可能にするためのトリックも知りません。

同意しました、それはオプションではありません。

私が見逃している他のオプションはありますか?

前述のようにContentProvider、データベースのラッパーとして を使用する人もいます。これは、このデータを第三者に公開しようとする場合に非常に役立ちます。純粋に内部で使用する場合には、長所と短所があります。

アプリケーションの使用についての言及を見たことがありますが、私はそれらに慣れていません。

カスタムApplicationサブクラスは、シングルトン インスタンス (静的データ メンバー) を持つことよりも何も得られないため、私はそれについて心配する必要はありません。

于 2013-08-07T17:56:03.783 に答える