[Android]アクティビティの表示 | Cocoa練習帳

[Android]アクティビティの表示

iOSアプリケーションは伝統的なUnixアプリケーションだが、Androidは独特だ。




アクティビティを簡単に説明すると画面という事になるのだが、システムのアクティビティマネージャによって開かれた画面はスタック構造で管理され、WebブラウザのBackボタンのように、前のアクティビティに戻る動きをする。

Linuxのプロセスとアプリケーションのライフサイクルは等号でなく、プロセスはアクティビティを入れる容器にすぎない。




アクティビティには、launchModeという開かれた際の挙動を定義する項目があり、これには以下の4つの種類がある。
























アクティビティが呼び出し元タスクに属する事に驚いたが、同一アプリケーション内部の場合に限定すると、あるアクティビティを開くインテントを実行した際に、とにかく開く要求が発生したら、その度に、ある画面を出したい場合はstandardを、そのアクティビティが開かれていた場合は新規に画面を開きたくない場合は、simgleTopをというのが良さそうだ。




実は、あるアプリケーションを作っていて、それはアプリ内のサービスから、通知経由で、そのアプリをフロントに移動させるという動きをさせたいのだが、フロントに移動する度にアクティビティが追加されて困っていた為、調査していた。




この問題そのものについて、Android関連のMLで答えを教えてもらったので、それも紹介しよう。




同一アプリで、あるアクティビティを開く場合は、以下のようにインテントを記述すると思うが、




Intent intent = new Intent(this, アクティビティ名.class);
startActivity(intent);



この時に以下の設定を追加すればいい。




intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);



質問の場を設けてくれた日本Androidの会の皆さん、ありがとうございます。助かりました!




関連情報
Android Developers

初めてのAndroid

Y.A.Mの雑記帳『Android launchMode の違い』

rokuta96のAndroidアプリ開発『Activityの属性「launchMode」について』



【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)