ホーム » Android » 【Android初心者必見】Activityのライフサイクルに関して挙動を確認してみた

【Android初心者必見】Activityのライフサイクルに関して挙動を確認してみた

【Android初心者必見】Activityのライフサイクルに関して挙動を確認してみた Android

はじめに:Activityのライフサイクルは必ず押さえたい

iOSでもAndroidでもモバイルアプリ開発に必須となるActivityのライフサイクル。ライフサイクルを知ることがモバイル開発の第一歩だと思っています。

AndroidのActivityのライフサイクルに関して調べたので記載していきます。

そもそもActivityのライフサイクルとは?

スマホの動作としてアイコンをタップしてアプリの起動バックグラウンドへの遷移アプリの再開アプリの終了などアプリケーションの状態は変化していきます。

それがActivityのライフサイクルと呼ばれています。

ライフサイクルメソッド

その変化する状態に応じて適切な処理としてActivityのライフサイクルに合わせたライフサイクルメソッドが用意されています。

Activityのライフサイクルライフサイクルメソッドの全景は以下のようになっています。

アクティビティのライフサイクルに関する簡略な図

引用:Android developers

  • onCreate():アクティビティの開始時に呼ばれます。ほとんどの初期化に理想的な場所です。
  • onStart():onCreateの後、また再度画面に表示されようとしている時に呼ばれます。
  • onResume():onStartの後に呼ばれます。活動中の状態を示しています。
  • onPause():別のアクティビティが前面に出ようとする時に呼ばれます。バックグラウンド遷移時にも呼ばれます。
  • onStop():onPauseの後に呼ばれます。アクティビティが完全に見えなくなった状態です。
  • onDestroy():アクティビティを破棄した時に呼ばれます。アプリを終了した時などです。
  • onRestart():アクティビティが再度前面に出ようとする時に呼ばれます。この後に呼ばれるのはonStartです。

ライフサイクルの挙動を確かめる

冒頭に貼ったgifアニメーションのアプリで挙動を調べました。

内容は全てのライフサイクルメソッドでToastを呼び、

アプリ起動→バックグラウンドへ→フォアグラウンドへ→アプリ終了の順番でアプリを動作させています。

結果は以下です。

public class MainActivity extends AppCompatActivity {
    private final String TAG = "LOG";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Static Work:Creating the views, binding data ...
        Log.i(TAG,"OnCreate() is called");
        Toast.makeText(this, "OnCreate() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG,"OnStart() is called");
        Toast.makeText(this, "OnStart() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG,"onResume() is called");
        Toast.makeText(this, "onResume() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG,"onRestart() is called");
        Toast.makeText(this, "onRestart() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG,"onPause() is called");
        Toast.makeText(this, "onPause() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG,"onStop() is called");
        Toast.makeText(this, "onStop() is called", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG,"onDestroy() is called");
        Toast.makeText(this, "onDestroy() is called", Toast.LENGTH_SHORT).show();
    }
}

さいごに

Activityのライフサイクルを知ることで適切な場所に処理を配置することが出来るようになります。

読んで頂きありがとうございました。

コメント

タイトルとURLをコピーしました