Android 正在运行APP

编程知识 更新时间:2023-05-02 19:57:52
class RuningApp {


    fun queryRunningInfo(
        activity: Activity
    ): MutableList<ApplicationInfo> {
        var pm = activity.packageManager
        // 查询所有已经安装的应用程序
        val packAllList =
            pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES)
        Collections.sort(
            packAllList,
            ApplicationInfo.DisplayNameComparator(pm)
        )

        return packAllList
    }

    fun saveAllRunning(activity: Activity): MutableMap<String, ActivityManager.RunningAppProcessInfo> {
        // 保存所有正在运行的包名 以及它所在的进程信息
        val pross: MutableMap<String, ActivityManager.RunningAppProcessInfo> =
            HashMap()
        val mActivityManager =
            activity.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        // 通过调用ActivityManager的getRunningAppProcesses()方法获得系统里所有正在运行的进程
        if (mActivityManager != null) {
            val appProcessList = mActivityManager
                .runningAppProcesses
            if (appProcessList != null) {
                for (appProcess in appProcessList) {
                    val pid = appProcess.pid // pid
                    val processName = appProcess.processName // 进程名
                    //            Log.i(TAG, "processName: " + processName + "  pid: " + pid);
                    val pkgNameList =
                        appProcess.pkgList // 获得运行在该进程里的所有应用程序包

                    // 输出所有应用程序的包名
                    if (pkgNameList != null) {
                        for (i in pkgNameList.indices) {
                            val pkgName = pkgNameList[i]
                            // 加入至map对象里
                            pross[pkgName] = appProcess
                        }
                    }
                }
            }
        }
        return pross
    }

    fun saveRunningNAme(
        activity: Activity,
        pkm: PackageManager
    ): ArrayList<RunNingBean> {
        // 保存所有正在运行的应用程序信息
        var runningApp: ArrayList<RunNingBean> =
            ArrayList<RunNingBean>()
        if (queryRunningInfo(activity) != null) {
            for (app in queryRunningInfo(activity)) {
                // 如果该包名存在 则构造一个RunningAppInfo对象
                if (saveAllRunning(activity).containsKey(app.packageName)) {
                    // 获得该packageName的 pid 和 processName
                    runningApp.add(RunNingBean(app.loadLabel(pkm) as String))
                }
            }
        }
        return runningApp
    }

}

更多推荐

Android 正在运行APP

本文发布于:2023-04-28 09:51:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/1dcb40c984cc0406b592b8e9cd5a8df3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:正在运行   Android   APP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 108453文章数
  • 27405阅读数
  • 0评论数