目前,由于安卓系统的特殊机制,app无法弹出应用级别的view,只能弹出系统级别的view或页面级别的view,前者需要申请很高的系统弹窗权限,很多用户不会授予该权限;后者只能每个界面单独添加,太过繁琐。因此,我们需要研发一种类似应用级别的view弹出方案。
云电脑安卓客户端提出了基于页面activity整体管理,智能选择页面弹view的方案。业务方无需感知当前处于哪个activity,直接调用展示消息接口即可弹出消息view,实现了应用级别弹view的效果。
该方案包含智能管理activity界面和在activity添加view两大部分。首先实现智能的页面管理器activityManager,该管理器以栈stack的形式存储所有的activity实例,当点开一个界面时就将该activity存入stack中,当离开界面时就将该activity移除掉。同时通过一个变量actName来记录当前打开的activity的名字。
有消息需要通知时,我们根据actName取栈中取到的activity就是当前显示的activity。在构造完消息view和展示动画后,我们调用该activity的addContentView方法将该消息view展示出来。该方案整体流程如下:
本方案在多个安卓app中得到应用,用户可方便接入,简单调用接口即可展示应用消息。