facebook twitter hatena line email

Android/ライフサイクル

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

基本ライフサイクル順序

  1. onCreate()
  2. onStart()
  3. onResume()
  4. onPause()
  5. onStop()
  6. 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");
    }
}

画面表示までライフサイクル順序

  1. onCreate
  2. onStart
  3. onResume
  4. onWindowFocusChanged

回転したときのライフサイクル順序(実機でlog確認済)

回転前表示時

  1. onStart
  2. onResume
  3. onWindowFocusChanged

回転したとき

  1. onPause
  2. onSaveInstanceState
  3. onStop
  4. onDestroy
  5. onCreate
  6. onStart
  7. onRestoreInstanceState
  8. onResume
  9. onWindowFocusChanged

回転時にActivityを破棄させず上記イベントを発行させない方法

Android/端末回転 [ショートカット]

バック・フォアグラウンドのライフサイクル順序(実機でlog確認済)

バックグラウンドに入ったとき

  1. onPause
  2. onWindowFocusChanged
  3. onSaveInstanceState
  4. onStop

フォアグラウンドに復活したとき

  1. onStart
  2. onResume
  3. onWindowFocusChanged

Intentで別の画面に移動&元の画面に戻ったときのライフサイクル順序(実機でlog確認済)

Intentで別の画面に移動

  1. onPause
  2. onWindowFocusChanged
  3. onSaveInstanceState
  4. onStop

元の画面に戻ったとき

  1. onStart
  2. onResume
  3. onWindowFocusChanged