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 件のコメント:

いまさらだけど、いまだからこその農業IoT 第1回

久々投稿 転職してはや2年半。バタバタしてる中で、あーっという間に時間は過ぎてきた。 仕事はそれなりに順調だけど、ただやっぱり自分で何かを起こす!ということはではできていなく、、、年齢45をこえ、、、、、とくに昔からずーとやろうやろうと言って実現できてなかっった農業IoT。。 去...