0

私はホーム画面ウィジェットを開発していて、androidsqliteデータベースを使用しています。DBAdapterデータベース作業を処理するために、単純なメソッド(add、remove、get records ...)を使用して単純なクラスを実装しました。それは機能しますが、今私はそれを行うための最良の方法を考えています。

私にとって最大の問題は、DBAdapterのインスタンスをどのように(そしてどこに)保存するかです。Activityを使用した場合、それは非常に簡単です。メソッドでDBAdapterのインスタンスを作成しonCreate、すべてが正常です。しかし、私が使用しているので、今はそのようなオプションがありませAppWidgetProviderIntentServices。(BroadcastReceiver)は、メソッドAppWidgetProviderの実行中の特定の時間のみ存続します。また、必要な作業を終えた後に「終了」します。では、DBAdapterのインスタンスをどこにどのように保存するのでしょうか。DBAdapterの新しいインスタンスを毎回作成したくありません。onReceiveIntentService

私はこのオプションについて考えていました:DBAdapterシングルトンクラスを作成するか、静的クラスとメソッドを使用します。別のオプションは、Gsonを使用してDBAdapterをsharedPreferencesに格納するか、シリアル化を使用することです。しかし、私はむしろ尋ねたいと思います。これを行う正しい方法は何ですか?ありがとう

4

1 に答える 1

0

私にとって最大の問題は、DBAdapterのインスタンスをどのように(そしてどこに)保存するかです。

上級者向けのヒント:Adapterから継承しない場合は、クラスを終了しないでくださいandroid.widget.Adapter

DBAdapterの新しいインスタンスを毎回作成したくありません。

シングルトン/静的データメンバーにすることを歓迎します。ただし、プロセスが終了すると、プロセスは終了するため、とにかく新しいプロセスを再度作成する必要があります。したがって、必要に応じて、でインスタンスを作成することをお勧めしますIntentService。「DBAdapter単純なメソッド(追加、削除、レコードの取得...)を使用する」は、インスタンス化するのに非常に安価である必要があります。

別のオプションは、Gsonを使用してDBAdapterをsharedPreferencesに格納するか、シリアル化を使用することです。

それは意味がありません。aの値の唯一のデータは、 (または他のソースからの)データであるDBAdapter必要があり、それ自体を永続化することはできません。さらに、これは、の新しいインスタンスを作成するよりもおそらく約1000倍遅くなります。SQLiteOpenHelperSQLiteDatabaseDBAdapter

于 2012-05-28T16:59:53.077 に答える