美文网首页
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