質問編集履歴

1

追記

2022/08/17 14:39

投稿

KIRIN3
KIRIN3

スコア28

test CHANGED
File without changes
test CHANGED
@@ -8,3 +8,37 @@
8
8
  それとも4つとも同じところを参照しているのでしょうか?
9
9
  また2と3の間でアクティビティがメモリ不足で消えたりしたら、context3,4だけがnullになるのでしょうか?
10
10
  それともcontext1,2もnullになるのでしょうか?
11
+
12
+ -----------------------------------------
13
+ ・追記
14
+ ぼんやりとした質問ですみませんが、シチュエーションとしてはfragmentでの呼び出しになります。
15
+ そもそもの疑問の発端はサンプルコードでよく以下のようなコードを拝見します。
16
+ Context context = getContext();
17
+ if (context == null) {
18
+ // エラーをスロー
19
+ }
20
+ ご回答いただいた内容から、getContext()で取得しているのは参照値であり、消滅しないということはわかりました。
21
+ 基本getContext()がnullになることはないと思うのですが、activityがメモリ不足で消滅した場合はnullになり参照できなくなるのでは?と考えています。
22
+ それともactivityがfragmentを呼び出しているのでgetContextがnullになるケースはないのでは?という考えもあり、nullになるケースはなんなのか?というのも疑問です。
23
+ また参照値が消滅しない、インスタンスへの参照をしている限りインスタンスが破棄されないとなると
24
+ たとえばfragmentにて以下の2パターンのコードがあるとします。
25
+ Aパターン
26
+ ```ここに言語を入力
27
+ Context context = getContext();
28
+ if (context != null) {
29
+ fogefoge(context)
30
+ }
31
+ ```
32
+ Bパターン
33
+ ```ここに言語を入力
34
+ if(getContext() != null){
35
+ fogefoge(getContext())
36
+ }
37
+ ```
38
+ Aパターンではcontextを保持し続けているのでhogehoge関数ではcontextの値はnullになることはないかと思います。
39
+ しかしBパターンでは一度getContext()でnullチェックをしても2回目のgetContext()がnullでない保証はないのでコードとして不適切ということでしょうか?
40
+
41
+ 話が紆余曲折してしまったのですが、残り聞きたいことをまとめると
42
+ fragmentでのgetContextがnullになるケースはどんなとき?
43
+ Bパターンのコードの書き方は不適切?
44
+ 考えが違っている箇所がありましたら、ご指摘いただけると助かります。