首页 > 解决方案 > 如何以编程方式终止 Oreo 中的后台任务?

问题描述

我正在构建一个移动应用程序,我想实现一个功能,我可以通过在 Android Oreo 中终止后台任务来清理内存(类似于 CCleaner 会做的事情)。

我尝试了在 GitHub 上找到的算法。但它似乎只适用于 Android 5.0

 protected void populateTextViewWithRunningProcesses() {
        // Empty the TextView
        mTextView.setText("");

        // Initialize a new instance of ActivityManager
        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);

        // Get a list of RunningAppProcessInfo
        List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();

        // Display the number of running processes
        Toast.makeText(mContext, "Running processes : " +
                runningProcesses.size(), Toast.LENGTH_SHORT).show();

        // Loop through the running processes
        for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
            // Get the process name
            mTextView.setText(mTextView.getText() + processInfo.processName + "\n");
        }
    }

它只显示我的应用程序自己的任务,但不显示其他正在运行的任务

标签: androidandroid-8.0-oreo

解决方案


Android 5.0+ 杀死了 getRunningTasks(int) 和 getRunningAppProcesses()。这两种方法现在都已弃用,仅返回您的应用程序进程。您可以使用 UsageStatsManager 获取正在运行的应用程序列表。检查这个例子:https ://github.com/googlesamples/android-AppUsageStatistics


推荐阅读