「Android/ライフサイクル」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→回転したときのライフサイクル順序) |
(→回転したときのライフサイクル順序(実機でlog確認済)) |
||
| (同じ利用者による、間の9版が非表示) | |||
| 行1: | 行1: | ||
| − | == | + | ==基本ライフサイクル順序== |
#onCreate() | #onCreate() | ||
#onStart() | #onStart() | ||
| 行10: | 行10: | ||
https://developer.android.com/reference/android/app/Activity.html | https://developer.android.com/reference/android/app/Activity.html | ||
| − | ==回転したときのライフサイクル順序( | + | ==ライフサイクルコード== |
| + | <pre> | ||
| + | public class MainActivity extends AppCompatActivity { | ||
| + | private String TAG = "MainActivity"; | ||
| + | @Override | ||
| + | protected void onCreate(Bundle savedInstanceState) { | ||
| + | super.onCreate(savedInstanceState); | ||
| + | Log.d(TAG, "onCreate"); | ||
| + | setContentView(R.layout.activity_main); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onStart() { | ||
| + | super.onStart(); | ||
| + | Log.d(TAG, "onStart"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onResume() { | ||
| + | super.onResume(); | ||
| + | Log.d(TAG, "onResume"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onPause() { | ||
| + | super.onPause(); | ||
| + | Log.d(TAG, "onPause"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onStop() { | ||
| + | super.onStop(); | ||
| + | Log.d(TAG, "onStop"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onDestroy() { | ||
| + | Log.d(TAG, "onDestroy"); | ||
| + | super.onDestroy(); | ||
| + | } | ||
| + | @Override | ||
| + | public void onWindowFocusChanged(boolean hasFocus) { | ||
| + | super.onWindowFocusChanged(hasFocus); | ||
| + | Log.d(TAG, "onWindowFocusChanged"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onRestoreInstanceState(Bundle savedInstanceState) { | ||
| + | super.onRestoreInstanceState(savedInstanceState); | ||
| + | Log.d(TAG, "onRestoreInstanceState"); | ||
| + | } | ||
| + | @Override | ||
| + | protected void onSaveInstanceState(Bundle outState) { | ||
| + | super.onSaveInstanceState(outState); | ||
| + | Log.d(TAG, "onSaveInstanceState"); | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
| + | ==画面表示までライフサイクル順序== | ||
| + | #onCreate | ||
| + | #onStart | ||
| + | #onResume | ||
| + | #onWindowFocusChanged | ||
| + | |||
| + | ==回転したときのライフサイクル順序(実機でlog確認済)== | ||
回転前表示時 | 回転前表示時 | ||
#onStart | #onStart | ||
| 行24: | 行82: | ||
#onStart | #onStart | ||
#onRestoreInstanceState | #onRestoreInstanceState | ||
| + | #onResume | ||
| + | #onWindowFocusChanged | ||
| + | |||
| + | 回転時にActivityを破棄させず上記イベントを発行させない方法 | ||
| + | |||
| + | [[Android/端末回転]] [ショートカット] | ||
| + | |||
| + | ==バック・フォアグラウンドのライフサイクル順序(実機でlog確認済)== | ||
| + | バックグラウンドに入ったとき | ||
| + | #onPause | ||
| + | #onWindowFocusChanged | ||
| + | #onSaveInstanceState | ||
| + | #onStop | ||
| + | |||
| + | フォアグラウンドに復活したとき | ||
| + | #onStart | ||
| + | #onResume | ||
| + | #onWindowFocusChanged | ||
| + | |||
| + | ==Intentで別の画面に移動&元の画面に戻ったときのライフサイクル順序(実機でlog確認済)== | ||
| + | Intentで別の画面に移動 | ||
| + | #onPause | ||
| + | #onWindowFocusChanged | ||
| + | #onSaveInstanceState | ||
| + | #onStop | ||
| + | |||
| + | 元の画面に戻ったとき | ||
| + | #onStart | ||
#onResume | #onResume | ||
#onWindowFocusChanged | #onWindowFocusChanged | ||
2018年11月14日 (水) 18:18時点における最新版
目次
基本ライフサイクル順序
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
参考
https://developer.android.com/reference/android/app/Activity.html
ライフサイクルコード
public class MainActivity extends AppCompatActivity {
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d(TAG, "onWindowFocusChanged");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(TAG, "onRestoreInstanceState");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.d(TAG, "onSaveInstanceState");
}
}
画面表示までライフサイクル順序
- onCreate
- onStart
- onResume
- onWindowFocusChanged
回転したときのライフサイクル順序(実機でlog確認済)
回転前表示時
- onStart
- onResume
- onWindowFocusChanged
回転したとき
- onPause
- onSaveInstanceState
- onStop
- onDestroy
- onCreate
- onStart
- onRestoreInstanceState
- onResume
- onWindowFocusChanged
回転時にActivityを破棄させず上記イベントを発行させない方法
Android/端末回転 [ショートカット]
バック・フォアグラウンドのライフサイクル順序(実機でlog確認済)
バックグラウンドに入ったとき
- onPause
- onWindowFocusChanged
- onSaveInstanceState
- onStop
フォアグラウンドに復活したとき
- onStart
- onResume
- onWindowFocusChanged
Intentで別の画面に移動&元の画面に戻ったときのライフサイクル順序(実機でlog確認済)
Intentで別の画面に移動
- onPause
- onWindowFocusChanged
- onSaveInstanceState
- onStop
元の画面に戻ったとき
- onStart
- onResume
- onWindowFocusChanged
