程序员人生 网站导航

RecentApps图标异常分析

栏目:综合技术时间:2015-07-23 08:14:34
  • 问题描写
    打开图库,点击“发送 ”按钮,选择上传到苏宁云,分享后点击“最近利用 ”按钮,发现云盘图标异常。
    这里写图片描述

  • 问题分析
    模块:SystemUI
    源码位置
    frameworks/base/packages/SystemUI/src/com/android/systemui/recent/

  • icon加载进程(RecentTaskLoader.java)
    这里写图片描述

  • 从Task信息中获得图标

final ResolveInfo resolveInfo = pm.resolveActivity(recentInfo.baseIntent, 0); private Drawable getFullResIcon(ResolveInfo info, PackageManager packageManager) { Resources resources; try { resources = packageManager.getResourcesForApplication( info.activityInfo.applicationInfo); } catch (PackageManager.NameNotFoundException e) { resources = null; } if (resources != null) { int iconId = info.activityInfo.getIconResource(); if (iconId != 0) { return getFullResIcon(resources, iconId); } } return getFullResDefaultActivityIcon(); }
  • ActivityInfo
public final int getIconResource() { return icon != 0 ? icon : applicationInfo.icon; }

若activity设置了icon返回activity的icon,否则返回application icon。

  • 从系统资源中获得默许图标
Drawable getFullResDefaultActivityIcon() { return getFullResIcon(Resources.getSystem(), com.android.internal.R.mipmap.sym_def_app_icon); }

android.R.mipmap
常量
int sym_def_app_icon
Default icon for applications that don’t specify an icon.
(小机器人来啦!)
这里写图片描述

  • 结论
    Recent apps利用图标显示优先级为:

    关于android 任务堆栈等更加深入的内容请移步“扩大浏览”, 强烈推荐~~~

  • 扩大浏览
    Android源码学习之6――ActivityManager框架解析
    android ActivityManagerService 源码分析―-Activity管理(1)

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐