Settings 获取app存储大小

设置里面的app信息里面存储里面的app Size对应stats.codeSize,读取流程如上,可以添加log要了解,可以主动抛异常来看流程

StorageStatsService.queryStatsForPackage-->StorageStatsService.queryStatsForUid -->Installer.getAppSize -->InstalldNativeService.cpp中getAppSize
 

###InstalldNativeService.cpp
binder::Status InstalldNativeService::getAppSize(const std::unique_ptr<std::string>& uuid,
        const std::vector<std::string>& packageNames, int32_t userId, int32_t flags,
        int32_t appId, const std::vector<int64_t>& ceDataInodes,
        const std::vector<std::string>& codePaths, std::vector<int64_t>* _aidl_return) {
     
    if (device.empty()) {
        LOG(DEBUG) << "william device.empty ";
        flags &= ~FLAG_USE_QUOTA;
    }
;

    if (flags & FLAG_USE_QUOTA && appId >= AID_APP_START) {
        LOG(DEBUG) << "william InstalldNativeService::getAppSize true... ";   
    } else {
        LOG(DEBUG) << "william InstalldNativeService::getAppSize else... ";     //normal flow
    }

    std::vector<int64_t> ret;
    
    //stats.codeSize = 0;
    ret.push_back(stats.codeSize);
    ret.push_back(stats.dataSize);
    ret.push_back(stats.cacheSize);
    ret.push_back(extStats.codeSize);
    ret.push_back(extStats.dataSize);
    ret.push_back(extStats.cacheSize);
    
    LOG(DEBUG) << "william true222 stats dataSize :" << stats.dataSize << " stats.codeSize : " << stats.codeSize;

#if MEASURE_DEBUG
    LOG(DEBUG) << "Final result " << toString(ret);
#endif
    *_aidl_return = ret;
    return ok();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值