0

Androidアプリケーションのチェックボックスのステータスをさまざまな数で保存する必要があります。5〜10分ごとに、1つのチェックボックスのステータスを取得する必要があります(他のアクティビティでのユーザー操作によって変更する必要があります)。私はそれらをsharedPreferencesまたはSQLiteデータベースに保存できることを知っています。数またはチェックボックスは10から(無限-1)まで可変です。

私の最初のアイデアは、すべてのステータスを1つの文字列に格納することでした。

chk1:true,chk2:false,chk3:false,chk4:false,chk5:true

とで区切られ:ます,。1回のgetString()呼び出しで、すべてのチェックボックスを取得できます。

チェックボックスの数が増えており、数千のデータを含む単一の文字列を使用することはできなかったため、このソリューションを終了しました。

私の2番目のアイデアは、すべてのchkを個別の設定で保存することでした。取得する必要がある原因がチェックボックスのステータスの倍になる可能性があるため、このソリューションを終了しました。10000 getString()回以上呼び出されると想像してください。これはリソースの浪費です。

私の3番目のアイデアは、すべての単一のステータスをSQLiteデータベースに保存することです。

 ID   Status
  1      T
  2      F
  3      F
  4      F
  5      T

このソリューションでは、DBに何度もアクセスする必要があるのは気に入らない。

今から5分ごとにチェックボックスのステータスを無限に取得する必要がある場合の最善の解決策(パフォーマンスとメモリ消費量)は何ですか?DBまたはsharedpref?DBの場合、dbを毎回開いてカーソルをインスタンス化する必要がありますか、それともアクティビティの開始時にインスタンス化する必要がありますか?

4

1 に答える 1

1

私は間違いなくSQLiteを使います。

共有設定とSQLiteの両方にキャッシュメカニズムがありますが、SQLiteは大量のデータの取得と保存用に特別に設計されていますが、共有設定は単純なアプリケーションに適しています...まあ...設定。

さらに、SQLiteは、データモデルが変更された場合に特に役立ちます(そして私を信じて、これは常に発生します)。SQLiteは、データの最もよく使用されるフラグメント(技術的にはデータベースのページ)もキャッシュします。これは、データの実際の使用パターンに適応します。

DBを開くことに関しては(一度開いて、作成した接続を複数回再利用することを強くお勧めします)、毎回データベースを開くオーバーヘッド(コストのかかる操作)を節約し、SQLiteが学習できるようにします(適応) )実際の使用方法に基づいてデータをキャッシュする方法(アクセスの順序、特定のSQLステートメントキャッシュなど)

于 2013-02-07T14:20:53.017 に答える