阅读:4449回复:1

Android7.1 8.1怎样一键清理后台

楼主#
更多 发布于:2020-10-14 10:34
客户需要提供一个API,可以一键清理后台任务,比如发个广播,收到广播后清理掉所有的后台任务。我看了Android8.1的SystemUI里面 RecentActivity的源码,里面有个清除所有的按钮,是这样清理所有任务的,
EventBus.getDefault().send(new DismissAllTaskViewsEvent());
我试了一下,在onStart()里面加上这句,然后在别处启动RecentActivity但是没有什么效果,只能启动RecentActivity,不能自动清理所有的后台任务。
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
沙发#
发布于:2020-10-19 09:18
    };
+      
+       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());
+    }
+      

[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
游客

返回顶部