论坛版主
|
}; + + private void RemoveAllRecentTasks() { + final PackageManager pm = mContext.getPackageManager(); + final ActivityManager am = (ActivityManager) + mContext.getSystemService(Context.ACTIVITY_SERVICE); + final List<ActivityManager.RecentTaskInfo> recentTasks = + am.getRecentTasks(21, ActivityManager.RECENT_IGNORE_UNAVAILABLE); + int numTasks = recentTasks.size(); + //Log.d("yu","----numTasks----" + numTasks); + ActivityInfo homeInfo = new Intent(Intent.ACTION_MAIN) + .addCategory(Intent.CATEGORY_HOME).resolveActivityInfo(pm, 0); + // skip the first task - assume it's either the home screen or the current activity. + //final int first = 0; + for (int i = 0, index = 0; i < numTasks && (index < 21); ++i) { + index++; + final ActivityManager.RecentTaskInfo recentInfo = recentTasks.get(i); + Intent intent = new Intent(recentInfo.baseIntent); + // Don't load the current home activity. + if (isCurrentHomeActivity(intent.getComponent(), homeInfo)) { + continue; + } + // Don't load ourselves + if (intent.getComponent().getPackageName().equals(mContext.getPackageName())) { + continue; + } + Log.v(TAG, "PersistentId = " + recentInfo.persistentId); + am.removeTask(recentInfo.persistentId); + } + } + + private boolean isCurrentHomeActivity(ComponentName component, ActivityInfo homeInfo) { + if (homeInfo == null) { + final PackageManager pm = mContext.getPackageManager(); + homeInfo = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME) + .resolveActivityInfo(pm, 0); + } + return homeInfo != null + && homeInfo.packageName.equals(component.getPackageName()) + && homeInfo.name.equals(component.getClassName()); + } +
|