回答編集履歴
1
test
CHANGED
@@ -1,51 +1,26 @@
|
|
1
1
|
お答えします。
|
2
|
-
|
3
2
|
これは、AndroidのActivityのライフサイクルに深く関係しています。
|
4
|
-
|
5
3
|
アプリを起動したときActivityは
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
onCreate()-onStart()-onResume()-実行中
|
10
|
-
|
11
|
-
|
12
6
|
|
13
7
|
という順番でライフサイクルが動作します。
|
14
|
-
|
15
8
|
ホームボタンが押されたときは
|
16
9
|
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
実行中-onPause()-onStop()
|
20
|
-
|
21
|
-
|
22
11
|
|
23
12
|
というライフサイクルを経て画面が背面へと移動します。
|
24
|
-
|
25
13
|
このときonStop()状態のアプリは端末の中で一時停止状態となっているわけなので
|
26
|
-
|
27
14
|
その状態でもう一度アプリを起動すると
|
28
15
|
|
29
|
-
|
30
|
-
|
31
|
-
|
16
|
+
onRestart()-onStart()-onResume()-実行中
|
32
|
-
|
33
|
-
|
34
17
|
|
35
18
|
といったライフサイクルで実行されます。
|
36
|
-
|
37
19
|
終了ではなく一時停止されていたので再開の処理がされて結果パターン1の挙動になったわけです。
|
38
20
|
|
39
|
-
|
40
|
-
|
41
21
|
ではパターン2は何故起こるのか、の説明をしたいと思います。
|
42
|
-
|
43
22
|
onStop()状態のアプリつまりホームボタンを押された一時停止の状態でもアプリは端末のメモリを圧迫しています。
|
44
|
-
|
45
23
|
そこで他のアプリを起動するなどしてより多くのメモリが要求されたとします。
|
46
|
-
|
47
24
|
そうすると端末は自動的に一時停止中のアプリなどを終了して、起動中のアプリの領域を確保しようとします。
|
48
|
-
|
49
25
|
onStop()されてたアプリはonDestroy()によって終了されているためもう一度起動した際は一番最初と同じ挙動パターン2をするわけです。
|
50
|
-
|
51
26
|
以上ですが、わかっていただけたでしょうか?
|