前回の続き

前回の説明でアプリという概念について混乱したかもしれません。

アプリはActivityというならず者の集まり

そもそもAndroidのアプリという概念は何なのよ・・・ということなんですが、Activityの集合といえるでしょう。

AndroidのActivityは異なるアプリ間で使いまわせるという特徴があります。

  • AとBというアプリがインストールされている
  • AからBのActivityを呼び出せる。また逆にBからAのActivityを呼び出せる

つまりAというアプリは、Aに属するActivityだけでなく、B及び他のアプリに属するActivityも使うことが出来る。1つのアプリは様々なアプリのActivityで構成される可能性がある。

Activityは本当は独立した存在で1つのアプリに属しているようで属していない無法者・・・ああ社会不適合者のおいらみたい。

この無法者をかき集めてなんだかアプリらしきものを形どっている・・・というのがAndroidアプリの実態のようです。

なんだかフワフワしてわかりづらいと思うので、現実世界を例にして説明します。

  • 会社A、B、Cがあり、それぞれ社員がいる
  • Aは人出が足らず、必要に応じてBやCから社員を派遣してもらう
  • そのときBやCの社員は客先ではAの社員の名刺を出す

これをAndroidアプリに置き換えるとこんな感じ

  • 会社A、B、Cがアプリ
  • それぞれの会社の社員がActivity
  • アプリAは、BやCのActivity(派遣社員)を、あたかものAというアプリ(会社)の一員のように仕事をさせる

もちろん、自社の社員だけで業務を行う会社があるように、自分のアプリのパッケージ内にあるActivityだけで動作するアプリもあります。ほとんどのアプリはそうでしょう。

今までのことを図で表すと、こんな感じでしょうか。

f:id:eimei23:20120719130141j:plain

Activityがメモリから消えるタイミング

Activityがメモリから消えるタイミングは以下のパターンがあります

  • 戻るボタンを押して今見ていたActivityが表示されなくなり、メモリから消される
  • 次のActivityが表示され今のActivityがバックグラウンドになった。その後、システムがメモリを必要として、バックグラウンドになったActivityをメモリから消した
  • Processそのものがメモリから消されて、Activityもまとめて全部メモリから消えた

1つ目については問題はないでしょう。Activityの状態復帰を意識することも少なそうです。問題は2つ目以降です。Process同様にバックグラウンドになったら、いつ消えるかわからないのがActivityです。Processの件も含めて理解すると、例のActivityのライフサイクル図も理解が進むと思います。

その5へ続く