Activity

Acitivityは画面を保持したアプリケーションを開発する際に用います。Androidには、Acivity以外に、画面のないアプリケーションであるServiceや、データへのアクセス用のContents Provider、AndroidからのBroadcastを取得するためのBroadcast Recieverが存在しています。




Activityのライフサイクル




 OnCreate


Activityを継承した起動クラスでは、onCreateメソッドが一番最初に呼び出されます。それでは、簡単なサンプルを用いて、onCreateメソッドの呼ばれるタイミングを確認してみましょう。





onCreate

The gadget spec URL could not be found








logcatを使ってログを表示してみます。Eclipseのメニューより [Window]-[Open Perspective]-[DDMS]を選択してください。


上の方にドラック&ドロップします。(すでに上の方に移動している場合もあります。)




ログの抽出

端末が出しているログと自分が作ったアプリが出しているログを見分けるのが、難しい場合があります。
ここでは、そんなときに、ログの中から自分の出したログを抽出する方法を説明します。





エラーログの見方

 Androidアプリを開発していると、以下のようにエラーが発生するものです。
その場合の対処方法について簡単に説明します。
 エラーが発生した場合は、以下のような画面が端末上に表示されると思います。

そのとき、まずはDDMを開き、LogCatを見ます。
今回は、自分の作ったソースコードの中には間違いがないが、自分の作ったクラス名が表示されているので自分の作ったプロジェクトの中のどこかで間違えていることがわかります。
「Android ClassNotFoundException」などとグーグルで調べると、⑥で説明した理由によりアプリケーションが実行できないことがわかります。

OnStart


onStartメソッドは、
  1. onCreateメソッドの後のタイミング
  2. 他のActivityが起動され、起動中のActivityが一度非表示になり停止した状態から再び呼びされれたタイミング
で呼ばれます。

onStart

The gadget spec URL could not be found


Homeボタンを押すと、起動中のActivityが一時停止状態にはいります。ActivitySample001アイコンを選択し再起動すると、onStart()が呼び出されます。

戻るボタンを押した場合は、Activityが終了状態になりますので、ActivitySample001アイコンを選択し起動すると、onCreate(), onStart()の順に呼ばれます。


 OnResume


onResume()は、onStart()の後で呼び出されます。また、電話等が着信し他のActivityが起動して終了した後に、onResume()が呼び出されます。

onResume

The gadget spec URL could not be found



 OnPause


onPauseメソッドは、他のActivityが起動した場合や自Activityが終了する場合に呼び出されます。

onPause

The gadget spec URL could not be found



 OnStop

onStop()は、アプリの終了ボタンが押された際と、他のActivityが起動された際に呼び出されます。

onStop

The gadget spec URL could not be found



 OnRestart

onRestart()は、ホームボタンが押されるなどしてonStop()が呼ばれた後、再びActivityに戻った際に呼び出されます。

onRestart

The gadget spec URL could not be found



 OnDestroy

onDestroy()は、アプリの終了ボタンが押された際に呼び出されます。

onDestroy

The gadget spec URL could not be found


リファレンス

android.app.Activity



Githubのソースコード

ċ
ActivitySample001_v1.java
(1k)
高梨与志郎,
Oct 3, 2012, 12:33 AM
ċ
ActivitySample001_v7.java
(1k)
高梨与志郎,
Oct 3, 2012, 12:37 AM
Comments