liguofeng29’s blog

個人勉強用ブログだっす。

AndroidのActivity - 概要

ActivitiyはWebアプリにおいてのServletと似ている。
Webアプリにおいて複数Servletが存在し、
Servlet(JSPの本質もServlet)は主にユーザと情報のやり取りを行い、情報を表示する。
 
Activityは
いつインスタンス生成されるか、
Activityのメソッドはいつ呼ばれるかはシステムが決めるのだ。
 
例えば、onCreate(Bundle status)

 

 

 
Activityの継承元

・Context←ContextWrapper←ContextThemeWrapper←Activity

 

Activityの継承したサブクラス

・ListActivity←LauncherActivity  
                   \PreferenceActivity 
・ExpandableListActivity
・AccountAutherticatorActivity
・FragmentActivity
・ActivityGroup←TabActivity
・AliasActivity

 

LauncherActivityのサンプルコード

 

Activityの配置

Androidはすべてのアプリコンポーネントについて配置が必要である。

(Activity, Service, ContentProvider, BroadcastReceiver)

配置は、AndroidManifest.xmlで行う。

 

<application ... >要素に <activity>要素を追加すればいいのだ。

 

属性値:

name - Activityのクラス名

icon -  Activity対応するアイコン

label - Activityのタグ

exported - 他のアプリが利用できるのか。<true|false>

launchMode - Activityのロードモード。

・standard 

・singleTop 

・singleTask 

・singleInstance  

 

子要素 :

<intent-filter> - 応答できるintentを複数指定できる。

 

例: 

これはアプリの入り口(MAIN)であることを示している

 

<intent-filter>

    <action android:name="android.intent.action.MAIN" />

</intent-filter>

 

 

Activityの起動と終了


startActivity(Intent intent)

- 他のActivityの起動

 

startActivityForResult(Intent intent, int requestCode)

- リクエストコードでActivityの起動し、結果を取得する

- リクエストコードは呼び出し元を表したりする

- onActivityResult()のオーバライドで結果取得

 

finish()

- 現在のActivity終了

 

finishActivity(int requestCode)

startActivityForResult(Intent intent, int requestCode) で起動したActivityを終了

 

サンプルコードココ

 

 

Activityへのデータ渡し

BundleをIntentを通して実現する。
Intentのメソッド
・putExtras(Bundle data)
・putExtra(String name, Xxx value)
・Bundle getExtras()
・getXxxExtra(String name)
Bundleのメソッド
・putXxx(String key, Xxx value)
・putSerializable(String key, Serializable data)
・getXxx(String key)
・getSerializable(String key)

 

※IntentのputExtraは知能的であり、実行する際にIntent内にBundleがあるかを
 判定し、なければ先にBundleを生成してデータを格納する。

サンプルコードココ

 

Activityからのデータ受け取り


Bundleを使い実現する。

 ① 起動するActivityで

onActivityResult(int requestCode, int resultCode, Intent intent)のオーバライド

 

② 起動されるActivityの

  setResult()実装

 

※resultCodeでどこからの結果なのかを判定する。

 

サンプルコードココ

 

Activiyの状態


実行状態 - Activityが前面に表示され、カーソル取得可能。
休止状態 - Activityが前面に表示され、カーソル取得不可。
停止状態 - Activityが見えない、カーソル取得不可。
破棄状態 - Activityが終了、もしくはActivityスレッドが終了。

 

起動から破棄までの詳細の流れはココです。

 

ActivityのLauncherMode

Activityの配置する時にandroid:launchMode属性でモード指定できる。
standard - デフォルトモード
singleTop - Taskキューのトップ
singleTask - Taskキュー内シングルインスタンス
singleInstance - 全Task内のシングルインスタンス

 

詳細はココ