首页 > 解决方案 > W/ResourceType:使用 PackageManager.getApplicationInfo() 时出现 ResTable_typeSpec 警告

问题描述

在我的 android 应用程序中,我在循环中多次调用以下函数以获取应用程序的标签/名称:

public String getName(int uid){
        String packageName=packageManager.getNameForUid(uid);
        ApplicationInfo ai;
        try {
            ai = packageManager.getApplicationInfo( packageName, 0);
        } catch (final PackageManager.NameNotFoundException e) {
            System.out.println(uid);
            ai = null;
        }
        return  (String) (ai != null ? packageManager.getApplicationLabel(ai) : "(unknown)");
}

对于第一个 onClick(),它会在 Logcat 中产生如下警告:

2020-04-15 18:45:25.219 22291-22340/com.dhruv.test W/ResourceType: ResTable_typeSpec entry count inconsistent: given 32, previously 38
2020-04-15 18:45:25.220 22291-22340/com.dhruv.test W/ResourceType: ResTable_typeSpec entry count inconsistent: given 2167, previously 2164
2020-04-15 18:45:25.220 22291-22340/com.dhruv.test W/ResourceType: ResTable_typeSpec entry count inconsistent: given 268, previously 1515

但在连续点击时不会发生。由于这些警告,循环的执行时间变为~600ms,否则只需要~200ms 来迭代。

标签: javaandroidandroid-applicationinfo

解决方案


推荐阅读