美文网首页
Android日志:Intent与显式跳转、隐式跳转

Android日志:Intent与显式跳转、隐式跳转

作者: 搬码人 | 来源:发表于2021-09-23 22:03 被阅读0次

关于Intent

下面是取自Android开发者文档中对Intent的简介:

Intent 用于通过描述您想在某个 Intent对象中执行的简单操作(如“查看地图”或“拍摄照片”)来启动另一应用中的某个 Activity。这种 Intent 称作隐式 Intent,因为它并不指定要启动的应用组件,而是指定一项操作并提供执行该操作所需的一些数据
当您调用 startActivity()startActivityForResult()并向其传递隐式 Intent 时,系统会将 Intent 解析为可处理该 Intent 的应用并启动其对应的 Activity。如果有多个应用可处理 Intent,系统会为用户显示一个对话框,供其选择要使用的应用。

想了解更多可进入https://developer.android.google.cn/guide/components/intents-common?hl=zh_cn
Intent简单来说就是意图,想干嘛。

显式跳转

1、在同一个应用程序
2、不同的界面(Activity)之间的跳转
3、明确指定从哪个页面切换到那个页面

实现同一个应用中两个不同页面的跳转:

  mJump.setOnClickListener {
            //明确指定从当前页面跳转到MediaActivity页面
            Intent(this,MediaActivity::class.java).apply {
                startActivity(this)
            }
        }

返回有不同的实现方式:
方式1:
跳转其实就是将跳转之后的当前页面放入到任务栈之中,当finish()之后就将该页面推出任务栈,显示任务栈中的下一个也就是跳转前的页面。

 mBack.setOnClickListener {
            finish()
        }

方式2:
在AndroidMainfest.xml中做配置
其实其内部实现就是方式1的代码

image.png
方式2的效果: 方式2

数据传递和回传
putExtra ->只能传递系统默认的数据类型

image.png
image.png

利用Bundle传递数据

bundle bundle

隐式跳转

不同程序之间进行页面的跳转
为什么叫隐式跳转:比如我们跳转到第三方的应用界面(微信支付、京东商城),对于我们自己的程序来说并不知道是具体跳转到哪个Activity,所以叫做隐式跳转。可以以同样的方式理解显示跳转。

隐式跳转到其他程序的页面

  • 实现方式:添加意图过滤器,向外部提供意图过滤。
  • 意图可以是系统提供的,也可以是自己定义的。
  • 添加意图其实对程序本身没有任何影响
  • 如果希望外部程序能够启动这个页面 必须设置category为Default
  • 若果同时希望外部传递过来数据 就必须定义数据格式data

左边为MediaPlayer这个app中AndroidManifest.xml的意图配置,右边为另一个项目中的点击事件

image.png

相关文章

网友评论

      本文标题:Android日志:Intent与显式跳转、隐式跳转

      本文链接:https://www.haomeiwen.com/subject/rfongltx.html