2015-09-30
関西モバイルアプリ研究会 #6
Android
API level 21 で導入された
documentLaunchMode
id:nobuoka
株式会社はてな
自己紹介と前置き
● id:nobuoka
 はてなブックマーク Android アプリ開発
● Lollipop (API Level 21) で追加された API
について
 documentLaunchMode
 Web 上でもあんまり情報がなかったので
 1 年前の気持ちで聞いてください
Recents Screen に複数ドキュメント
● Recents Screen (Overview screen)
● 最近使われたタスクが表示される
● API 21 から同一アプリで複数項目可に
android:documentLaunchMode 属性
● AndroidManifest.xml の activity 要素
● Activity の 新しいインスタンスを recents screen に
どのように表示するかを制御
● 値は 4 種類
 always : 常に新しい項目 (タスクも新しく)
 intoExisting : コンポーネント名と URI が別なら新
 none : デフォルト; フラグ次第
 never : フラグを上書き
インテントのフラグでも制御可能
● FLAG_ACTIVITY_NEW_DOCUMENT
 intoExisting の指定と同等
● FLAG_ACTIVITY_MULTIPLE_TASK
 上のフラグと組み合わせて always 指定と
同等
documentLaunchMode=“intoExisting”
● デモ動画
● 初回は新しいタスクで 2 回目以降は再利用
● Overviewe からタスクを削除して終了するこ
ともできる
documentLaunchMode=“always”
● デモ動画
● 毎回新しいタスクが生成される
 Activity のインスタンスも新しいもの
onNewIntent メソッドが呼ばれない問題
● intoExisting を設定していてタスクが存在す
る場合は onNewIntent メソッドが呼ばれる
● ってドキュメントには書かれている
● 実際には呼ばれない!!!!
 API 22 で確認
● 例えば Chrome から 「共有」 されたときにイ
ンテントの情報を取れない
回避方法
● launchMode=“singleTop” 等なら呼ばれる
● 別アプリからインテントで起動されるなら考慮
する必要がある
● “Activities launched with the
FLAG_ACTIVITY_NEW_DOCUMENT flag
must have the
android:launchMode="standard"
attribute value”

Android API level 21 で導入された documentLaunchMode について