Android 7.1 新特性-----Shortcuts
2018-12-04 本文已影响0人
欧祎
image.png
image.png
Android 7.1 允许 App 自定义 Shortcuts,类似 iOS 的 3D touch。通过在桌面长按 App 弹出 Shortcut 列表,点击某个 Shortcut 快速进入某项操作,同时 Shortcut 可以拖动到桌面进行固定。
从展现效果上来看,分为两种方式:
image.png
在添加方式上和广播有点像,分为在清单文件中静态注册,和在运行时中动态添加两种方式。
-
静态方式(Static shortcuts):
在Manifest中申明添加,不可修改,只能通过重新打包的方式来更新快捷方式。
image.png image.png -
动态添加(Dynamic shortcuts)
通过 ShortcutManager API 进行操作。可以动态添加、修改、删除。
image.png -
Pinned shortcuts(Android 8.0 即API 26以上)
指通过拖动固定到桌面的 Shortcuts。
App 不可以添加、修改、删除这些 Shortcuts,只能禁用他们。即便 App 内删除了某个 Shorcut,对应的已固定到桌面的 Shortcuts 也不会被删除。
在尝试添加pinned shortcuts的时候,用户会收到一个确认对话框,询问是否允许固定快捷方式。
Static shortcuts 和Dynamic shortcuts的区别
- Static shortcuts只能通过重新打包修改配置,Dynamic shortcuts可以在运行时根据具体业务场景动态修改。
- Static shortcuts的Intent无法设置FLAG,默认为FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK Flag,即若应用运行中会清除所有已存在的 Activity。Dynamic shortcuts 的 Intent 可以设置 Flag。
- Static shortcuts 的Delete直接删除,Dynamic shortcuts 的Delete通过禁用删除。
- Static shortcuts的排列顺序按照声明顺序排列,Dynamic shortcuts可以通过setRank(int rank)函数设置顺序,默认情况下Static shortcuts距离宿主App更近。
其他
- 为了防止 ShortcutManager 过度消耗设备资源,在Activity以及Service都在后台的情况下,操作Shortcut的频率是受限的。
- Static shortcuts 和Dynamic shortcuts 是有最大个数限制的,默认为 5,超过最大个数后添加会报异常。而固定的 Shortcuts 并没有个数限制,并且固定的 Shortcut 对应的 Shortcut 即便被动态删除了,依然可以通过 id 进行 Update 操作。
- 可以通过setIntents()分配多个intent(同时打开多个页面)。
应用场景
- 把一些常见的高频次操作放到shortcuts中
- 把一些路径较深(难找)但是非边缘的功能页面
- 可以分配多个intent(同时打开多个页面,形成一个页面栈),可以从运营玩法的角度去挖掘这个特性。