ActivityManager#getRecentTasks()の情報って?
getRunningTasks()と同様にgetRecentTasks()を見てみます。ActivityManagerService#getRecentTasks()の処理をチェック。
1 2 3 4 5 6 7 8 9 10 11 12 | 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 件のコメント:
コメントを投稿