1 DeepLink的实现思路
在Android开发中,可以通过在清单文件中配置scheme来实现页面跳转,所以可以通过scheme匹配的方式来实现DeepLink的功能。配置方式大概分为三种:
1.1 为每一个要跳转的Activity都指定一个对应的匹配条件,一般项目复杂页面太多的话,就比较麻烦不太方便。
1.2 配置闪屏页为匹配页面,闪屏页一般都是APP冷启动时才会出现,而且打开首页后,闪屏页就会关闭,这种方式在APP没有启动的情况下可以很好的处理对应的Inteng信息,但是如果APP已经启动过了,去拉起闪屏页就不合理了。
1.3 配置首页为匹配页面,首页在APP中一般都是常驻的,一般情况下首页关闭就意味着APP的退出,所以可以选择用首页来统一处理匹配scheme得到的Intent信息,然后进行统一的跳转分发(需要将首页Activity的启动模式设置为singleTask以防止首页创建多个页面)
2 DeepLink的实现案例
在首页的onCreate方法和onNewIntent方法里面,接收Intent参数进行相应的跳转处理:
上述两个步骤就可以实现deeplink的效果了,可以在as的终端输入命令:
如果有多个参数,&符号之前要加\进行转义,否则后面的参数接收不到。
但是在上面还有个问题,那就是在APP还没启动的情况下,由于直接拉起的是首页页面,并没有经过闪屏页(如果APP已经启动过了,不需要走闪屏页,直接走首页然后进行相应跳转是没有问题的)。这里主要的解决方案就是记录一个是否经过闪屏启动的一个标志位就行,如果是就正常处理,如果不是就要重新打开闪屏页。
1 在闪屏页面跳转到首页时,在Intent中传递一个标志位,以代表闪屏页已经启动过了。
2 在首页页面中获取IS_SPLASH_LUNCH的值来判断闪屏页面是否已经启动过,如果为true不进行特殊处理,如果为false就关闭首页并开启闪屏页,还要传递uri数据给闪屏页。
网友评论