3

私はApplicationクラスとオブジェクトの状態を維持する方法について調査してきました。Androidのドキュメント(ライフサイクル、推奨事項など)、に関する多くの質問/回答など、Web全体で多くのことを読みました。主題、および他のもの、そしてまだいくつかの疑問があります、そして私はこの部分を将来の発展に非常に明確にしたいと思います。これはすべてのAndroid開発者に共通の問題だと思うので、(ドキュメントだけでなく)どのような経験がそれについて言っているのか知りたいです。だから私はいくつかの質問があります:

1-アプリケーションクラスはメモリから強制終了するか、フォアグラウンドのアプリとして初期化できますか?状態を保持するいくつかの静的変数を持つApplicationのサブクラスがある場合、アプリがバックグラウンドに移行すると、メモリのために強制終了してから再起動できることを知っていますが、フォアグラウンドにあるときに発生する可能性はありますか?

2-アプリのメモリがOSによっていつでも消去または初期化できる場合、データベースまたはファイルによってオブジェクトの状態を保持する唯一の信頼できる方法はありますか?(本当に望んでいない!!)

3-この問題について役立つその他のヒント。

4

1 に答える 1

2

私の経験から、あなたはドキュメンテーションが言っていることについて過剰に行動し、考えすぎています。ほとんどのアプリケーションは、アプリケーションを拡張する必要はなく、拡張するべきではありません。

1-アプリケーションは、最も極端な状況でのみフォアグラウンドで強制終了されます。したがって、今のところこの部分を忘れて、アプリ自体について心配する必要があります。それが発生した場合、ユーザーはアプリを最初から再起動します。

onSaveInstanceState(Bundle outState)とonRetainCustomNonConfigurationInstance()をオーバーライドし、onCreate(Bundle savedInstances)とgetLastNonConfigurationInstance()でそれらの値を読み戻すことにより、アクティビティのライフサイクル(アプリケーションではない)を維持する必要がある2-状態オブジェクト。これらのメソッドは、非推奨になる可能性のあるアクティビティ用です。一部のメソッドは非推奨になっていることを知っています。ドキュメントを読むと、フラグメントの代替となるものがわかります。フラグメントを使用します。また、状態は、インテント/バンドルを介してアクティビティから他のアクティビティに渡すことができます。

3-永続データを保持するには、データベースとSharedPreferencesを使用する必要があります。アクティビティの状態では、使用可能なアクティビティとフラグメントのコールバックを使用します。どういうわけか、アプリケーションにシングルトンを作成できるかなり特定のニーズがある場合、私が言うとき、アプリケーションの99%は必要ありません。

お役に立てば幸いです。

于 2012-09-27T15:12:18.000 に答える