LoginSignup
82
74

More than 5 years have passed since last update.

AndroidエンジニアのためのiOSのUIViewControllerのライフサイクルとAndroidのActivityのライフサイクル比較

Last updated at Posted at 2015-07-07

自分は絶賛iOSの勉強中のAndroidエンジニアです。

理解しやすくするためiOSのUIViewControllerのライフサイクルをAndroidのActivityとを比較してみました。

まずはおなじみActivityのライフサイクル

そしてiOSのライフサイクル

iOSのライフサイクルはそもそも考え方が違うみたいです。

というのも公式には下記のようにライフサイクルにはAppearかDisappearのステータスの概念しかないようです。(Androidはその観点だけによってライフサイクルが作られているわけじゃないしメインの観点でもない。)

なので、そもそも比較自体に無理もあるのですが、とはいえ、呼ばれるタイミングなどは少なからず似通ってるだろうと思って、Activityのどこのメソッドに相当するのか整理してみました。

似ている というのは呼ばれるタイミングがということです。

loadView,viewDidLoadはonCreateに似ている

呼ばれ方が下記の点で、ActivityのonCreateに似ているなと思いました。

  • 画面遷移後1度呼ばれる。
  • 画面遷移して戻って来た時は呼ばれない

viewWillAppear,viewDidAppearはonResumeに似ている

呼ばれ方が下記の点で、ActivityのonResumeに似ているなと思いました。

  • 画面遷移後1度呼ばれる
  • 画面遷移して戻って来た時も呼ばれる

ただ下記の点では違いました。

  • 画面のON/OFFをしても呼ばれない
  • アプリをバックグラウンドにやって、再度アプリをフォアグランドに戻しても呼ばれない

viewWillDisappear,viewDidDisappearはonPauseに似ている

呼ばれ方が下記の点で,ActivityのonPauseに似ているなと思いました。ただ、これだけだとonDestroyに似ていると言えるのですが、(viewWillAppear, viewDidAppear)とセットと考えるならonPauseだろうという思惑が入った結果、こちらを選びました。

  • 画面を閉じる際に1度呼ばれる

ただ下記の点では違いました。

  • 画面のON/OFFをしても呼ばれない
  • アプリをバックグラウンドにやる際に呼ばれない

昔はviewWillUnload,viewDidUnloadもあったみたい

試してませんが、こちらはonDestroyっぽいのかな。

やっぱり結構無理があった

無理やり当てはめてみたけど下記の点で結構無理があった感。

  • iOSのライフサイクルは表示されているか否かだけに依存しているけど、Androidはそうじゃない
  • iOSは画面のON/OFFとかフォアグランド/バックグランドは意識してない
  • onCreate <=> (loadView,viewDidLoad)とか呼ばれるタイミングは似通ってるかもだけど、中でやってることはイコールじゃない

とはいえ、比較によって理解が深まったので良かったです。

82
74
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
74