5.1 动态 Shortcuts 与静态 Shortcuts 区别
(1) 静态 Shortcuts 只能通过升级应用修改,动态 Shortcuts 随时可以修改;
(2) 静态 Shortcuts 的 Intent 无法设置 Flag,默认为 FLAG_ACTIVITY_NEW_TASK 和 FLAG_ACTIVITY_CLEAR_TASK Flag,即若应用运行中会清除所有已存在的 Activity。动态 Shortcuts 的 Intent 可以设置 Flag;
(3) 静态 Shortcuts 的 rank 系统默认根据声明顺序设置,动态 Shortcuts 的 rank 可以通过 setRank(int rank) 接口主动设置,rank 不能小于 0,值越大表示在 shortcut 列表展示时离 App Icon 越远。静态 Shortcuts 默认比动态 Shortcuts 离 App Icon 更近。
(4) 静态 Shortcuts 删除可以直接删除,动态 Shortcuts 建议通过禁用删除;
5.2 动态 Shortcuts 操作的频率问题
当应该完全退到后台(无 Activity 或 Service 在前台时),其操作 Shortcut(包括添加、删除、修改) 的频率是受限的。可通过 isRateLimitingActive() 查询是否已受限,true 表示已受限。
5.3 跟踪 Shorcut 使用情况
在 Shortcut 被选择或者其关联的操作被操作时需调用 reportShortcutUsed(String shortcutId) 接口上报数据,为了方便启动器收集应用 Shortcuts 使用情况,可能未来进行预测或者向开发者展示哪些操作适合作为 Shortcuts 以及其优先级。
PS:这个接口其实挺尴尬的,一方面需要 App 主动上报,侵入性太强。另一方面这个预测功能未来也不好加到 Shortcuts 推荐里,更多是个开发工具相关功能。
最好是由启动器自己纯粹收集 Shortcut 被选择的使用情况数据,而不需要统计 Shortcut 被关联操作通过其他方式调用的使用情况数据。至于哪些操作适合作为 Shortcuts,开发者大可通过其他监控 SDK 去判断。
更多关于 Shortcuts 比较好的实践、使用过程中可能的问题、Launcher 如何支持可见:
http://www.trinea.cn/android/new-features/android-7-1-shortcuts-best-pratices/