すべてのメモデータをsqlite3データベースに保存するtodoリストタイプのアプリケーションがあります。アプリケーションの各アクティビティは、データのさまざまな部分をリアルタイムで編集するためにデータベースにアクセスする必要があります。
現在、各アクティビティで独自のDBManagerオブジェクト(データベースを管理するために作成したヘルパークラス)を開いています。これは問題を引き起こしていますが、もう少しグローバルなアクセスソリューションが欲しいので、データベースを開いたり、閉じたり、作成したりする必要はありません。
いくつかのオプションを検討していますが、それぞれの長所と短所、その他の提案を聞きたいと思います。
シングルトンスタイル。唯一のデータベースマネージャーへの参照を返すラッパークラスを用意して、それを必要とするアクティビティで使用できるようにします。
静的マネージャー。マネージャークラスを完全に静的なメンバーにし、読み込み時にデータベースを開くようにします。それを必要とする人(誰でも)が簡単にアクセスできます。
1と2の間の合併。データベースのメンバーシングルトンインスタンスを初期化するデータベースマネージャークラスを作成でき、すべてのデータ操作メソッドは静的でした。そうすれば、データベースにアクセスするためにシングルトンへの参照も必要なくなります。私はこのソリューションが一番好きです。欠点を指摘してください。
提案?
私の意見では、コンテンツプロバイダーは複雑であり、自分のものではないアクティビティと共有しないのであれば、それは必要ありません。したがって、最初にシングルトンクラスを使用することをお勧めします。その後、時間がある場合や必要な場合は、コンテンツプロバイダーにアクセスしてください。
シングルトンを6か月間問題なく使用できました。(ただし、実際にシングルトンにするように注意しました。データを1回だけロードするインスタンスは1つだけです)
シングルトン
コンテンツプロバイダー
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加