Android L getTasksの挙動変更

公式サイトのAPI Overviewにも載っていますが、AndroidのバージョンLからgetRecentTasks()の挙動が変わります。っていうかDeprecated(非推奨)になりました。

英文を以下に貼り付けます。

If your app uses ActivityManager.getRecentTasks()…

With the introduction of the new concurrent documents and activities tasks feature in the upcoming release (see Concurrent documents and activities in Recents screen below), the ActivityManager.getRecentTasks() method is now deprecated to improve user privacy. For backward compatibility, this method still returns a small subset of its data, including the calling application’s own tasks and possibly some other non-sensitive tasks (such as Home). If your app is using this method to retrieve its own tasks, use android.app.ActivityManager.getAppTasks() instead to retrieve that information.

もしあなたのアプリがgetRecentTasks()を使っている場合。。。

ユーザーのプライバシー向上のため、バージョンLからActivityManager.getRecentTasks() メソッドが非推奨になります。下位互換のため、このメソッドはまだ値を返しますが、LでgetRecentTasksを叩くと自分自身のタスク情報と非機密情報(ホームアプリのタスクなど)のみ返します。自分自身のタスク情報のみを取り出したい場合はgetAppTasks() を使ってください。

文章だけでもなんとなくわかりますが、実際に試してみました。

getRecentTasks()※非推奨

List<ActivityManager.RecentTaskInfo> tasks = mActivityManager.getRecentTasks(30, ActivityManager.RECENT_WITH_EXCLUDED);
for (int i = 0; i < tasks.size(); i++){
tasks.get(i).baseIntent.getComponent()
}

今回非推奨になったメソッドです。自分自身とホームアプリのみ表示されています。注意点として、取得されるホームアプリ情報はインストールされているもの全てです。

RecentTaskInfo

getRunningTasks()※非推奨

List<ActivityManager.RunningTaskInfo> tasks = mActivityManager.getRunningTasks(30);
for (int i = 0; i < tasks.size(); i++){
tasks.get(i).topActivity.getPackageName()
}

getRecentTasksと同じ挙動でした。

RunningTaskInfo

getAppTasks()

List<ActivityManager.AppTask> tasks = mActivityManager.getAppTasks();
for (int i = 0; i < tasks.size(); i++){
tasks.get(i).getTaskInfo().baseIntent.getComponent()
}

このメソッドは自分自身のタスクのみを取得していました。自分自身のタスク確認としては使えるかもしれません。

AppTask

getRunningAppProcesses()

List<ActivityManager.RunningAppProcessInfo> tasks = mActivityManager.getRunningAppProcesses();

for (int i = 0; i < tasks.size(); i++){
tasks.get(i).processName
}

このメソッドは今までと変わらず、起動中のプロセス一覧を取得できました。

RunningAppProcessInfo

 

ノーティフィケーションにタスクの履歴一覧を表示するアプリなど、自分以外のタスク情報を取得、利用していたアプリは全滅ですかね。。。

※2014/07/07時点のSystemImage(hammerhead-lpv79-preview-ac1d8a8e)を入れたNEXUS5とAndroidStudiov0.8で検証致しました。プレビュー版での確認なので、今後変更になるかもしれません。


コメント

このブログの人気の投稿

島へ移住の話【炊飯】

ドローンプログラミング体験教室を伊豆大島の小学校でしてきました

情報処理安全確保支援士登録証のカード型が届きました。