2010年12月3日金曜日

Android 親和性と新しいタスク

Android アクティビティとタスクで、アクティビティのタスク管理について基本は説明したが、
デフォルトではアプリケーション内のActivityはできる限り同じタスクに属そうとする。これを
「親和性」と呼ぶ。しかし、この「親和性」も設定によって変更できる。以下それについて説明する。

関係するものは、以下のIntentフラグ。
 FLAG_ACTIVITY_NEW_TASK
 FLAG_ACTIVITY_CLEAR_TOP
 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
 FLAG_ACTIVITY_SINGLE_TOP

また、以下の<activity>属性も関係。
 taskAffinity
 launchMode
 allowTaskReparenting
 clearTaskOnLaunch
 alwaysRetainTaskState
 finishOnTaskLaunch

■FLAG_ACTIVITY_NEW_TASK
startActiviyのパラメータにFLAG_ACTIVITY_NEW_TASKを指定すると、新しい
タスクとして起動させることができる。


例)a⇒b⇒c(FLAG_ACTIVITY_NEW_TASK)

タスク タスク タスク タスク
    |c| ← ここが表示
     ̄
| | | | | | | |
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
  ̄   ̄    ̄   ̄
■allowTaskReparenting
allowTaskReparentingがtrueになっていると、そのアクティビティと親和性のあるアプリがフォアグランドに来た際に、呼び出し元のアクティビティからそのアプリのタスクに移動できる(らしい)



例)アプリ①cb(allowTaskReparenting)⇒ホーム画面⇒アプリ②a⇒b


==フォアグラウンド====================================================
タスク       タスク タスク
| |        | | | |
|b|⇒ホーム画面⇒| |⇒|b|←ここが表示
|c|       |a| |a|
  ̄          ̄   ̄
==バックグラウンド====================================================
              ↑↑↑
タスク       タスク     
| |        | |     
|b|⇒ ⇒ ⇒ ⇒| | 
|c|       |c|    
  ̄          ̄      
======================================================================

0 件のコメント:

試験結果

昨日の夜、CGーArtsエンジニアのベーシック、エキスパートの自己採点をした。 実は日曜日には回答が出ていたけど、自信がなく採点するのもやめようかと思っていたがタイミング&勢いでやってしまった。 <結果>  ベーシック:85点  エキスパート:72.5点 70点以上で合格なので...