スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Andoroid 開発ガイドを読みながらの走り書き2

前回の続きです。
Android開発ガイドを読んでいます。

アクティビティとタスク(序章)

[ここで使われる用語]
ユーザエクスペリエンス   → 
   経験的開発のこと?
タスク  →
   ユーザが一つのアプリケーションとして捉えられる物。  
ルートアクティビティ
    タスクを開始するアクティビティ。 通常は、アプリケーションランチャで選択するアクティビティ
アプリケーションランチャ
    アプリケーションを動作させるアイコンのリスト。ショートカットみたいな物。
スタック  →
    LIFO(last in first out)の構造。詳しくはここを参照。ここでは、アクティビティを保持する入れ物。
フォアグラウンド  → ユーザにとって、現在アクティブな物。
バックグラウンド → ユーザに取って、現在アクティブではなく、動作ししている物。
   
[言っていること]
・自分のアプリケーションのアクティビティや他のアプリケーションのアクティビティを呼び出すことができ、
   アクティビティを格納するスタックにアクティビティが格納される。
・複数同じアプリケーションを開くと、別々のタスクで動作する。
・タスクの値は、ルートアクティビティでまとめて設定でき、タスク内のアクティビティは、
   まとめてフォアグラウンド、バックグラウンドに移動する。
   ただし、上記動作はデフォルトで、インテントオブジェクトやマニフェストファイルによって動作の変更は可能。
・主なインテントフラグ(呼び出し方法(イベント))は、
   FLAG_ACTIVITY_NEW_TASK
   FLAG_ACTIVITY_CLEAR_TOP
   FLAG_ACTIVITY_RESET_TASK_IF_NEEDED  
   FLAG_ACTIVITY_SINGLE_TOP
   がある。
マニフェストファイルで定義される主な属性は、
   taskAffinity
   launchMode
   allowTaskReparenting
   clearTaskOnLaunch
   alwaysRetainTaskState
   finishOnTaskLaunch
   がある。

親和性と新しいタスク (アクティビティとタスク)
[ここで使われる用語]
親和性  →  アクティビティの属性?

[言っていること]
アクティビティには属性があり、属性によりそのアクティビティの動きを制御することができる。
以下に挙がっていた例を示す。

FLAG_ACTIVITY_NEW_TASK フラグ
  通常は、アクティビティを呼び出すと、同じタスク内でアクティビティが動作する。
  しかし、FLAG_ACTIVITY_NEW_TASK フラグの属性を付加すると、
  別のタスクでアクティビティを動作させようとする。

allowTaskReparenting 属性
  この属性がtrueになっていると、呼び出し側で用意したタスクに、属性がtrueになっているアクティビティを
  移すことができる。
  例えば、ある旅行アプリケーションが気象情報のアクティビティを持っていたとする。
  その際、ユーザが違うアプリケーションを立ち上げ、そのアクティビティが気象情報アクティビティを
  呼び出すと、気象アクティビティは、違うアプリケーションのタスクに移動する。
  更に、ユーザが旅行アプリケーションをアクティブにすると、気象情報アクティビティは、旅行アプリケーションの
  タスクに移動する。

つまり、アクティビティは、属性によって、タスク間を移動できるということ。
"親和性"という意味が分かりづらい。 今の段階では説明できません。



起動モード (アクティビティとタスク)
[言っていること]
アクティビティ属性のlaunchModeで表される起動モードは、4種類ある。
・standard
・singleTop
・singleTask
・singleInstance


簡単に説明すると、アクティビティを起動した際、
・standard属性の場合は、呼出し元と同一タスク内で、複数生成可能で、必ず独立したアクティビティーが生成される。
・singleTop属性の場合は、呼出し元同一タスク内で、複数生成可能で、最上位に同じアクティビティーがある場合は再利用される。
・singleTask属性の場合は、
必ずタスクのルートとなるので、1つのみ生成可能で、
   同一タスク内に同じアクティビティを生成する場合は、上のアクティビティを消去し、タスクが再利用され、
・singleInstance属性の場合は、必ずタスクのルートとなり、他のアクティビティーを同一タスク内に入れることができない。
という様な形になる。
以下に表を示します。

ふるまい standard singleTop singleTask singleInstance
どのタスクに属するか 呼出し元 呼出し元 独立 独立
複数生成できるか できる できる 1つ 1つ
自タスクに他のアクティビティを入れれるか できる できる できる 別タスクで開く
既存の同一アクティビティを利用するか しない する 同一タスク内で、再利用される 新しくタスクを生成する。



この辺で、タスク、インテント、アクティビティーについて混乱してきたので、ちょっとまとめます。
アクティビティ ・・・ UIのインスタンス
インテント        ・・・処理データインスタンス
タスク              ・・・インスタンススタック


この三つを下のように表現し、まとめてみます。
ActivityIntentTask

■アクティビティーは、インテントを保持して、タスクにスタックされる。
StackActibityWithIntent


■アクティビティーは、インテントの属性(FLAG_ACTIVITY_NEW_TASK)により、違うタスクにスタックされる。
ActibityMoveOtherTask


アクティビティーは、アクティビティ属性(launchModen)によって、生成のされ方が異なる。
    ・"standard","singleTop"と、"singleTask","singleInstance"の違い
ActibityDiff


    ・"standard"と"singleTop"の違い

ActibityCreateModeDiffSta_Sig
 

   ・"singleTask"と"singleInstance"の違い

ActibityCreateModeDiffSt_Si

となります。


スタックのクリア (アクティビティとタスク)
[言っていること]
・ユーザが、長期間スタックを放置していると、アクティビティスタックがクリアされる。
・ただし、アクティビィーの属性により、これを解除することができる。
    以下に、その属性を挙げる。
   [alwaysRetainTaskState 属性 = true ]
    長時間放置してもクリアされない様になる。
   [clearTaskOnLaunch 属性 = true]
    ユーザがタスクを離れるとクリアされる。時間ではなく、ユーザがタスクから離れるか離れないかの制御になるということ。
   [finishOnTaskLaunch 属性 = true]
    clearTaskOnLaunch 属性と少し異なり、ユーザが単一のアクティビティから離れるとアクティビティスタックがクリアされる。

・インテントにFLAG_ACTIVITY_CLEAR_TOP属性が含まれていても、クリア制御ができる。

タスクの開始(アクティビティとタスク)
[言っていること]
・"android.intent.action.MAIN"に"android.intent.category.LAUNCHER"に登録すると、ランチャにアイコンが登録され、
    ユーザ任意にタスク(アクティビティ)を開始できる。
・また、ユーザの操作によりバックグラウンド等にタスクが写った場合、ランチャを押すことで再度タスクをフォアグラウンド
   に戻すことができる。






Activityはボリュームが多かったです。
疲れたので、今回はここで次回に譲ります。

終わり。










  





スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ss_9

名前 :ss_9
紹介 :
20代はエンジニア、30代はプロ、40代は管理、50代は人脈。

Twitterボタン

最新記事
カテゴリ
AD
月別アーカイブ
RSSリンクの表示
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。