Android vs iPhone【Controller】
今回からAndroidアプリとiPhoneアプリの仕組みの比較をしてみます。
両方触ってみると全く違う部分もあるのですが、結構と似ている部分があったりするので、似ている部分は比較して、一緒に覚えてしまえばいいじゃん!というノリです。
今回はMVCでいうControllerにあたるActivity(Android)とUIViewController(iPhone)です。
ライフサイクル
AndroidもiPhoneもライフサイクル部分はフレームワークとして用意されていて、状態が変わるタイミングでそれぞれのメソッドが呼ばれるような作りになってます。
AndroidのAcitivity
Activity | Android Developers
iPhoneのUIViewController
iPhone Dev Center: UIViewController Class Reference
全部読むのは心が折れてしまうと思うので、表にしてみました。
基本的に上から順番にメソッドが呼ばれます。完全に1対1で対応をするわけではないので、そういう部分は複数行に分けて書いてます。
| Android | 説明 | iPhone | 説明 |
|---|---|---|---|
| onCreate | Activityの初回起動時に呼ばれる。このタイミングでビューの読み込みやその他パラメータの初期化を行う。 | init loadView viewDidLoad |
initで初期化、loadViewメソッドでビューの設定、viewDidLoadでビューロード後のプロパティ初期化などを行う |
| onStart | ビューが画面に表示されるタイミングで呼ばれる | viewWillAppear viewDidAppear |
ビューが画面に表示される前のタイミングでviewWillAppearが、表示された後にviewDidAppearが呼ばれる |
| onRestart | 2度目以降の画面表示の時に呼ばれる。主にonStopからの復帰。 | viewWillAppear viewDidAppear |
同上 |
| onPause | 画面ロックする時などに呼ばれる。 | applicationWillResignActive | アプリがスリープ状態になると呼ばれる。 (UIViewControllerではなく、UIApplication) |
| onResume | 画面ロックなどから復帰した時に呼ばれる。主にonPauseの後。 | applicationDidBecomeActive | スリープから復帰時に呼ばれる (UIViewControllerではなく、UIApplication) |
| onStop | 別画面を起動するなどして、今の画面が非表示になるタイミングで呼ばれる。 | viewWillDisappear viewDidDisappear |
画面が非表示になる前のタイミングでviewWillDisappearが、非表示になった後にviewDidDisappearが呼ばれる |
| onDestroy | Activityが破棄されるタイミングで呼ばれる | dealloc | コントローラが破棄されるタイミングで呼ばれる。メモリの解放などをする |
まとめ
onCreateからonDestroyまでがActivityが生きている。
onStartからonStopまでがActivityが画面に表示されている。
onResumeからonPauseまでがActivityがforegroundで動いている。
ということです。
上の表で対応でiPhoneの方もだいたい同じです。
これでControllerはAndroidもiPhoneも完ぺきです。


