您的位置:首页 > 移动开发 > Android开发

Android4.4 应用在近期任务列表中不显示修改系统源码详解RecentsActivity与RecentTasksLoader

2014-09-25 12:27 645 查看
android4.4\frameworks\base\packages\SystemUI\src\com\android\systemui\recent\RecentsActivity.java

此函数是打开最近应用点击空闲地方跳转

public void dismissAndGoHome() {

if (mRecentsPanel != null) {

Intent homeIntent = new Intent(Intent.ACTION_MAIN, null);

homeIntent.addCategory(Intent.CATEGORY_HOME);

homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK

| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

startActivityAsUser(homeIntent, new UserHandle(UserHandle.USER_CURRENT));//这里是跳转到系统最高Launch 里面



}

}

//记录最近应用在这里面

android4.4\frameworks\base\packages\SystemUI\src\com\android\systemui\recent\RecentTasksLoader.java

protected Void doInBackground(Void... params) {

// We load in two stages: first, we update progress with just the first screenful

// of items. Then, we update with the rest of the items

final int origPri = Process.getThreadPriority(Process.myTid());

Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);

final PackageManager pm = mContext.getPackageManager();

final ActivityManager am = (ActivityManager)

mContext.getSystemService(Context.ACTIVITY_SERVICE);

final List<ActivityManager.RecentTaskInfo> recentTasks =

am.getRecentTasks(MAX_TASKS, ActivityManager.RECENT_IGNORE_UN***AILABLE);

int numTasks = recentTasks.size();

ActivityInfo homeInfo = new Intent(Intent.ACTION_MAIN)

.addCategory(Intent.CATEGORY_HOME).resolveActivityInfo(pm, 0);

boolean firstScreenful = true;

ArrayList<TaskDescription> tasks = new ArrayList<TaskDescription>();

// skip the first task - assume it's either the home screen or the current activity.

final int first = 0;

for (int i = first, index = 0; i < numTasks && (index < MAX_TASKS); ++i) {

if (isCancelled()) {

break;

}

final ActivityManager.RecentTaskInfo recentInfo = recentTasks.get(i);

Intent intent = new Intent(recentInfo.baseIntent);

if (recentInfo.origActivity != null) {

intent.setComponent(recentInfo.origActivity);

}

//关键代码

// Don't load the current home activity.

if (isCurrentHomeActivity(intent.getComponent(), homeInfo)) {//这里是屏蔽了系统最高launch 不记录在最近应用的栈中

continue;

}

// 手动增加需要的包名

if (intent.getComponent().getPackageName().equals(“要屏蔽的包名”)) {

continue;

}

// Don't load ourselves

if (intent.getComponent().getPackageName().equals(mContext.getPackageName())) {

continue;

}

TaskDescription item = createTaskDescription(recentInfo.id,

recentInfo.persistentId, recentInfo.baseIntent,

recentInfo.origActivity, recentInfo.description);

if (item != null) {

while (true) {

try {

tasksWaitingForThumbnails.put(item);

break;

} catch (InterruptedException e) {

}

}

tasks.add(item);

if (firstScreenful && tasks.size() == mNumTasksInFirstScreenful) {

publishProgress(tasks);

tasks = new ArrayList<TaskDescription>();

firstScreenful = false;

//break;

}

++index;

}

}

if (!isCancelled()) {

publishProgress(tasks);

if (firstScreenful) {

// always should publish two updates

publishProgress(new ArrayList<TaskDescription>());

}

}

while (true) {

try {

tasksWaitingForThumbnails.put(new TaskDescription());

break;

} catch (InterruptedException e) {

}

}

Process.setThreadPriority(origPri);

return null;

}

};

mTaskLoader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

loadThumbnailsAndIconsInBackground(tasksWaitingForThumbnails);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐