予期しないことに、アプリケーションの終了後に静的なクラスメンバーが保持されていることがわかりました (onDestroy()が呼び出された後)。 静的メンバーの初期化は、次のアプリケーションのインスタンス生成では無視されます。 これは正常なのでしょうか、それともエミュレータのバグだけですか? ドキュメントでそれについて何も見つかりません。彼らはこの行動に関係する何かを指定していますか?アプリケーションが破棄されたときに静的メンバー値が保持されるのは普通ですか?
追加コメント:私はこのような活動、静的および非静的に2つのフィールドを持っている場合は は:
static String s1 = new String("s1");
String s2 = new String("s2");
を...と破壊し、再度アプリケーションを起動し、最初の初期化が実行されず、2つ目実行される。センスはどこですか?私にとっては、それは言語のルールに違反します。
だから、静的メンバーの初期化は役に立たず、変更可能なものはすべてコードの先頭に割り当てる必要があることがわかります。 – ardabro
@ardabro静的属性は無駄ではありませんが、意図した特定の目的に使用する必要があります。それらは定数を格納するためにJavaアプリケーションでよく使われます(しばしば 'final'キーワードを使って不変であることが強制されます)。クラスのインスタンス間で値が共通で一貫性があるなど、他のシナリオでも役に立ちます。 – Atonewell
間違いなく、Androidアプリのライフサイクルは、起動/停止がより明示的に制御される典型的なJavaアプリとは異なります。 –