2010年11月17日水曜日

Activity クラスのコンストラクタ

Activityクラスのコンストラクタについてちょっとだけ調べてみた。
ただし、検証機は

xperia
Android 2.1

での話。

MAINのアクティビティが起動される際、そのアプリケーションについて1度でも起動した事があるとか、設定が完了していないと使う事ができないようなアプリケーションの場合、起動時に確認が必要になる。
Activityのライフサイクルではじめに呼ばれる

onCreate()

でチェックしても良いが、余計なオーバーヘッドをなるべく減らすために、onCreate() よりも呼ばれる頻度が低く、はじめに呼ばれるメソッドにチェックするコードを書きたいと思い、それは、、、結局もうコンストラクタしかない。

アプリケーションのMAINに指定してあるActivityのコンストラクタがどんなタイミングで呼ばれるか調べた。
検証した内容は

  • アプリケーション起動後、ホーム キーを押し、また起動
  • アプリケーション起動後、戻るキーを押して、アクティブじゃなくなった後、また起動
  • アプリケーション起動後、ホーム キー、電源ボタンを1度押し、サスペンド状態にして、再び起動
  • アプリケーション起動後、戻るキーを押して、アクティブじゃなくなった後、電源ボタンを1度押しサスペンド状態にして、再び起動
検証結果は、
  • 「戻る」で非アクティブした場合(その後サスペンドにしてもしなくても)、次回起動時、ほぼ必ずコンストラクタが呼ばれる。(今んとこ100%)
  • ホーム キーで非アクティブにした場合(その後サスペンドにしてもしなくても)、次回起動時はほぼ必ずコンストラクタが呼ばれない(今んとこ100%)
って結論になったよ。という話。

ただし、xperia、android 2.1 でしか試してないので、他のプラットホームでは、どうなるかは分からない。

おそらく、その時の空きメモリ容量などの都合によるかもしれないので、残りが少ない時は、毎回コンストラクタが呼ばれるかもしれない。

とりあえず、自分が使いたいと思った目的には合ってるから、これで良いかなという事で。

それからandorid を利用する際、なるべくメモリに残さないように非アクティブにしたいのであれば、ホーム キーより、戻るキーの方が良いみたい、って事がわかった。


0 件のコメント:

コメントを投稿