2

問題は、私が Android の開発を学び始めたとき、内部データを専用クラス内の public static 変数に保存することだけを考えていたので、どのアクティビティからでも簡単にアクセスできるようになりました。重複がないことが非常に重要であり、これらの値は常に一意であり、Singleton モデルのようなものです。これは非常にうまく機能していますが、確かに最も美しいソリューションではありません。ユーザーがホームボタンを介してアプリケーションをバックグラウンドにすると、問題が発生します。神は、何分、何日、またはそれ以上の時間を知っているので、そこに残ります...その後、彼はアプリケーションを再度開き、システムがすでにそれらを破棄したため、これらの静的変数はすべてnullになりました。これらの変数の一部は単純な文字列ですが、一部は非常に複雑な独自のクラスです。

最初の質問は、アプリがバックグラウンドに移行したときに、これらのデータを保存できる、信頼できるグローバル フックがあるかどうかです。したがって、ユーザーがアプリを再びフォアグラウンドに移動すると、保存された状態からこれらの変数を再初期化することができます。

2 番目の質問は、これらの複雑なデータを保存する最善の方法は何かということです。私が理解している限りでは、文字列を保存するための SharedPreferences は問題ありませんが、より複雑なクラスはどうでしょうか? SharedPreferences も使用できますか、それとも他のものを使用する必要がありますか?

今のところ、私が考えることができるのはこれだけです。事前に助けてくれてありがとう!

4

4 に答える 4

3

クラス内の静的変数全体の悪い考え。グローバル変数の大失敗全体を無視すると、それらは持続しません。データを保持する必要がある場合は、 SharedPreferencesまたはデータベースを使用する必要があります。

于 2012-10-05T18:13:46.107 に答える
0

最初の質問については、アクティビティ ライフサイクルの onResume() メソッドに似たものを探していると思います。

ストレージに関する質問については、sqlLite を利用できます。

于 2012-10-05T18:16:37.997 に答える
0

このドキュメントでは、Android のすべてのデータ ストレージ オプションについて説明します。SharedPreferences は単純な型には最適ですが、1 つ以上のSQLiteデータベースを使用した方がよいように思えます。

于 2012-10-05T18:16:44.447 に答える