AndroidにおけるActivityライフサイクル分析:Androidにおける縦画面切り替え時のライフサイクルプロセス
6216 ワード
最近Androidの面接で、今日はこのような問題が出ました.
ライフサイクルはこうだったと思っていました
onCreate --》 onStart -- ---》 onResume ---》 onPause ---》 onStop ---》 onRestart ---》 onResume ---》 onPause ---》 onStop
家に帰ってから自分でパソコンでデモンストレーションし直して、別の結果が出て、やはり実践して真の知識を出しました.はい、まずコードをつけて、必要な友达に直接コードを貼ってください.
Activityの問題について話した以上、私は完全にやってみます.
まずプログラムが起動すると、印刷されたlog:
10-08 20:32:52.231: I/ActivityLife(1188): onCreate ...10-08 20:32:52.251: I/ActivityLife(1188): onStart ...10-08 20:32:52.251: I/ActivityLife(1188): onResume ...
つまり、プロセスはonCreate----->onStart->>onResume.
をクリックしてボタンを返すと、印刷されたlog:
10-08 20:33:49.282: I/ActivityLife(1188): onPause ...10-08 20:33:50.401: I/ActivityLife(1188): onStop ...10-08 20:33:50.401: I/ActivityLife(1188): onDestory ...
流れは:onPause----->onStop----->onDestory
通常の流れをまとめると、onCreate--->onStart->>onResume->onPause--->onStop--->onDestory
縦横画面切り替え時のライフサイクルについて説明します.
最初の起動時:
10-08 20:46:43.811: I/ActivityLife(1188): onCreate ...10-08 20:46:43.831: I/ActivityLife(1188): onStart ...10-08 20:46:43.831: I/ActivityLife(1188): onResume ...
ライフサイクルは次のとおりです:onCreate->onStart->onResume.
次に、次のように切り替えます.
10-08 20:47:56.551: I/ActivityLife(1188): onPause ...10-08 20:47:56.561: I/ActivityLife(1188): onStop ...10-08 20:47:56.561: I/ActivityLife(1188): onDestory ...10-08 20:47:56.631: I/ActivityLife(1188): onCreate ...10-08 20:47:56.631: I/ActivityLife(1188): onStart ...10-08 20:47:56.651: I/ActivityLife(1188): onResume ...
ライフサイクルは、onPause-->onStop----->onDestory----->onCreate->onStart->onResume;
次に画面を切り替えます.
10-08 20:49:24.601: I/ActivityLife(1188): onPause ...10-08 20:49:24.601: I/ActivityLife(1188): onStop ...10-08 20:49:24.601: I/ActivityLife(1188): onDestory ...10-08 20:49:24.621: I/ActivityLife(1188): onCreate ...10-08 20:49:24.631: I/ActivityLife(1188): onStart ...10-08 20:49:24.631: I/ActivityLife(1188): onResume ...
ライフサイクルは、onPause--->onStop----onDestory----onCreate->onStart->onResume;
以上、Androidでの縦横画面切り替え時のライフサイクルは次のとおりです.
onCreate--->onStart--->onResume.--》onPause--->onStop---》onDestory--->onCreate--->onCreate--->onStart--->onResume;
onCreate --》 onStart -- ---》 onResume ---》 onPause ---》 onStop ---》 onRestart ---》 onResume ---》 onPause ---》 onStop
ここで特に注意したいのは、画面が切り替わると、その前の画面の状態が破棄され(onDestory)、新しい画面でライフサイクルが再開されることです.(onCreate->onStart--->onResume)
私が犯した間違いは、前にスクリーンライフサイクルがマウントされていたと思って、再起動(onRestart)したことです.のこの問題はよくあるので、ちょうど仲間と共有できます.
ライフサイクルはこうだったと思っていました
onCreate --》 onStart -- ---》 onResume ---》 onPause ---》 onStop ---》 onRestart ---》 onResume ---》 onPause ---》 onStop
家に帰ってから自分でパソコンでデモンストレーションし直して、別の結果が出て、やはり実践して真の知識を出しました.はい、まずコードをつけて、必要な友达に直接コードを貼ってください.
package com.king.review.base;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
/**
* author: king.liu
* data:2013-10-8 8:02:40
* do:TODO
*/
public class ActivityLife extends Activity {
public static final String TAG = "ActivityLife";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate ...");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart ...");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "onRestart ...");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume ...");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause ...");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop ...");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestory ...");
}
}
Activityの問題について話した以上、私は完全にやってみます.
まずプログラムが起動すると、印刷されたlog:
10-08 20:32:52.231: I/ActivityLife(1188): onCreate ...10-08 20:32:52.251: I/ActivityLife(1188): onStart ...10-08 20:32:52.251: I/ActivityLife(1188): onResume ...
つまり、プロセスはonCreate----->onStart->>onResume.
をクリックしてボタンを返すと、印刷されたlog:
10-08 20:33:49.282: I/ActivityLife(1188): onPause ...10-08 20:33:50.401: I/ActivityLife(1188): onStop ...10-08 20:33:50.401: I/ActivityLife(1188): onDestory ...
流れは:onPause----->onStop----->onDestory
通常の流れをまとめると、onCreate--->onStart->>onResume->onPause--->onStop--->onDestory
縦横画面切り替え時のライフサイクルについて説明します.
最初の起動時:
10-08 20:46:43.811: I/ActivityLife(1188): onCreate ...10-08 20:46:43.831: I/ActivityLife(1188): onStart ...10-08 20:46:43.831: I/ActivityLife(1188): onResume ...
ライフサイクルは次のとおりです:onCreate->onStart->onResume.
次に、次のように切り替えます.
10-08 20:47:56.551: I/ActivityLife(1188): onPause ...10-08 20:47:56.561: I/ActivityLife(1188): onStop ...10-08 20:47:56.561: I/ActivityLife(1188): onDestory ...10-08 20:47:56.631: I/ActivityLife(1188): onCreate ...10-08 20:47:56.631: I/ActivityLife(1188): onStart ...10-08 20:47:56.651: I/ActivityLife(1188): onResume ...
ライフサイクルは、onPause-->onStop----->onDestory----->onCreate->onStart->onResume;
次に画面を切り替えます.
10-08 20:49:24.601: I/ActivityLife(1188): onPause ...10-08 20:49:24.601: I/ActivityLife(1188): onStop ...10-08 20:49:24.601: I/ActivityLife(1188): onDestory ...10-08 20:49:24.621: I/ActivityLife(1188): onCreate ...10-08 20:49:24.631: I/ActivityLife(1188): onStart ...10-08 20:49:24.631: I/ActivityLife(1188): onResume ...
ライフサイクルは、onPause--->onStop----onDestory----onCreate->onStart->onResume;
以上、Androidでの縦横画面切り替え時のライフサイクルは次のとおりです.
onCreate--->onStart--->onResume.--》onPause--->onStop---》onDestory--->onCreate--->onCreate--->onStart--->onResume;
onCreate --》 onStart -- ---》 onResume ---》 onPause ---》 onStop ---》 onRestart ---》 onResume ---》 onPause ---》 onStop
ここで特に注意したいのは、画面が切り替わると、その前の画面の状態が破棄され(onDestory)、新しい画面でライフサイクルが再開されることです.(onCreate->onStart--->onResume)
私が犯した間違いは、前にスクリーンライフサイクルがマウントされていたと思って、再起動(onRestart)したことです.のこの問題はよくあるので、ちょうど仲間と共有できます.