admin管理员组

文章数量:1530305

相信Android开发者都会知道,在应用内跳转页面,我们肯定会用到 Intent。使用 Intent 跳转页面有显式跳转和隐式跳转两种方式。

Intent intent = new Intent();

intent.setClass(this, MainActivity.class);

startActivity(intent);

典型的显式跳转就如同上面的代码一样,如果需要携带数据的话,我们也有两种方式。一方面我们可以调用 Intent 的 putExtra 系列方法,通过键值对的方式把数据传递过去。Intent 支持传递的数据包括基本类型数据、字符串、序列化以及各自的数组,有意思的是 Intent 支持 Parcelable数组 但不支持 Serializable数组。然后在跳转的页面通过相应的 get方法 把数据拿出来即可。

另一方面,我们也可以用 Intent 的 setData方法 将统一资源标识符Uri传递过去,然后在接收端解析 Uri 来拿出数据。对于一个 Uri,主要由以下几部分组成:

scheme://host:port/path?query

相应地,我们便能从 Uri 中把各个部分的信息拿出来。

而隐式跳转则是通过 Intent 的 action 来实现。典型的便是我们在桌面点击了应用的图标,然后应用启动进入我们的第一个页面。相信大家都知道对于应用自动的第一个页面,我们在 AndroidManifest.xml 文件中对 Activity 注册时,会有这么一段代码。

实际上应用从点击图标到启动第一个页面的过程相当复杂,如果大家有兴趣的话可以去看老罗的博客:

Android应用程序启动过程源代码分析

http://blog.csdn/luoshengyang/article/details/6689748

从源代码的分析来看,桌面图标保存了相应应用的启动 intent,该 intent 保存了 AndroidManifest.xml 的信息。因此我们自定义隐式启动页面时,只需要在 AndroidManifest.xml 中相应的 Activity 配置相应的 action 信息,然后调用的时候设置相应的 action 便可启动相应 Activity。

比如我们之前开发应用时,想要调用系统拨打电话应用,我们并不知道拨打应用 Activity 的具体信息,所以只有通过隐式方式来调用。

本文标签: 优雅浏览器htmldeeplink