ActivityManager#getRecentTasks()の情報って?
getRunningTasks()と同様にgetRecentTasks()を見てみます。ActivityManagerService#getRecentTasks()の処理をチェック。
public List<ActivityManager.RecentTaskInfo> getRecentTasks(int maxNum, int flags) { : : final int N = mRecentTasks.size(); ArrayList<ActivityManager.RecentTaskInfo> res = new ArrayList<ActivityManager.RecentTaskInfo>( maxNum < N ? maxNum : N); for (int i=0; i<N && maxNum > 0; i++) { : :
mRecentTasksのTaskRecord情報からListを生成します。
TaskRecordをmRecentTasksに追加するタイミング
ActivityManagerService#addRecentTaskLocked(TaskRecord task)でaddを行っており、このモジュールをコールするのはActivityStackのこちら。
final boolean realStartActivityLocked() final boolean resumeTopActivityLocked()
Activity起動、またはresumeを行ってActivityがTopになったタイミングでtaskをaddします。
TaskRecordをmRecentTasksから削除するタイミング
削除するのは以下のタイミングaddRecentTaskLocked()のadd処理でMAX(=20)を超えた場合、古いものを削除 RecentsPanelView(=履歴表示)からSwipで削除した場合、ActivityManagerService#removeTask()をコール
こちらはRunningTasksとくらべ、ユーザー操作に近いトリガーとなります。
getRecentTasks()は『起動アプリ履歴に残っているTask一覧』であって、
現在、起動中と意味でTask情報を取得したい場合はgetRunningTasks()を使用する方が好ましいと思います。
0 件のコメント:
コメントを投稿