Android 获取应用总大小

Android 获取应用总大小

本文的所有代码都是用kotlin写的,但是原理都是一样的。一个应用的总大小,包括应用大小、用户数据和缓存。这些数据我们该怎样获取了,下面我们一起来看一看!

Android 8.0以前的获取方法

在Android 8.0以前获取应用的总大小,google没有提供对应API,但是我们可以通过反射来获取,代码如下:

fun getAppTotalsize(context: Context, pkgName: String) {
    val mPackManager: PackageManager = context.packageManager
    //反射获取PackageManager内部getPackageSizeInfo方法
    val method = PackageManager::class.java.getMethod("getPackageSizeInfo", String::class.java, IPackageStatsObserver::class.java)
    var appSizeL: Long
    method.invoke(mPackManager, pkgName, object : IPackageStatsObserver.Stub() {
        @Throws(RemoteException::class)
        override fun onGetStatsCompleted(pStats: PackageStats, succeeded: Boolean) {
            //应用的总大小等于缓存大小加上数据大小再加上应用的大小
            appSizeL = pStats.cacheSize + pStats.dataSize + pStats.codeSize        
    })
}

上面的代码还是很简单的,但是有的同学可能会不理解,IPackageStatsObserver.Stub() 是怎么来的,其实就是IPC,上面的实现需要有两个aidl文件IPackageStatsObserver.aidl和PackageStats.aidl,他们的内容如下:

IPackageStatsObserver.aidl
package android.content
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值