facebook twitter hatena line email

「Android/ライフサイクル」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(回転したときのライフサイクル順序(実機でlog確認済))
 
(同じ利用者による、間の10版が非表示)
行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時点における最新版

基本ライフサイクル順序

  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