如何以编程方式获取android中所有已安装应用程序使用的总内存空间?

时间:2016-10-19 10:20:08

标签: android android-studio android-6.0-marshmallow appsettings

我列出了所有已安装的应用程序。当我单击列表中的任何应用程序时,我想以编程方式显示该应用程序使用的总内存(类似于settings-> apps)。 我尝试了什么:

 long apsize = new File(this.getPackageManager().getApplicationInfo(
                packageName, 0).publicSourceDir).length();
        int unit = si ? 1000 : 1024;
        if (apsize < unit) return apsize + " B";
        int exp = (int) (Math.log(apsize) / Math.log(unit));
        String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i");
        //replacing kib and mib from the value
        return String.format("%.1f %sB", apsize / Math.pow(unit, exp), pre).replace("MiB","").replace("KiB","");

但它只返回apk大小,因为我想获得所选应用程序使用的总内存。有没有办法以编程方式获取应用程序使用的总内存?

1 个答案:

答案 0 :(得分:0)

您可以通过编程方式获取内存信息,并决定是否进行内存密集型工作。 我认为这适用于当前的应用程序!

通过调用

获取VM堆大小

调用Runtime.getRuntime()totalMemory();

通过调用:

获取分配的VM内存
Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

通过调用:

获取VM堆大小限制
Runtime.getRuntime().maxMemory()

通过调用:

获取本机分配的内存
Debug.getNativeHeapAllocatedSize();