回答編集履歴
1
追記
answer
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
> staticの変数は扱いに注意が必要
|
2
2
|
|
3
3
|
それだけを知っていても不十分と思います。なぜそうなのを知らないといけないのでは?
|
4
|
-
staticがダメならsingletonにすればいいかとだけ聞くと「一般的にそんな因果関係はなさそう」と言えると思います。意味的に同様のものだからです。
|
4
|
+
staticがダメならsingletonにすればいいかとだけ聞くと「一般的にそんな因果関係はなさそう」と言えると思います。意味的に同様のものだからです。
|
5
|
+
|
6
|
+
---
|
7
|
+
追記:
|
8
|
+
参照ページがいわんとすることのポイントはユーザー操作でアプリケーションを終わらせてもプロセスが死ぬとは限らないことに注意が必要ということだと思います。新たにアプリケーションが開始されたという場面でも以前アプリケーションが動いていた時のクラスやインスタンス(もちろんstaticフィールドの値も)の状態が、(アプリケーション終了時にきちんと後始末しないと)残っちゃってるから注意しないといけないよということですね。
|
9
|
+
|
10
|
+
情報の起点はいずれにせよstaticフィールドになるわけですがそこから直接・間接に繋がったあらゆるインスタンス(singletonであるものもそうでないものも)がActivity終了時点でも端末上に残っている「かもしれない」ことに対する対処は「Activityのライフサイクルが完了したときにしかるべき後始末をする」あるいは「Activityのライフサイクル開始時点で明示的に初期化を行う」ということになると思います。staticフィールドに保持している値がintなどのprimitive型なら開始時に初期化すべきでしょうし、何かのクラスのインスタンスであるなら終了時にそのインスタンスに対するしかるべき後始末処理をした後staticフィールドからの参照を(nullを代入するなどして)無くすべきということになるでしょう。
|
11
|
+
|