• 安卓基础知识:Intent解析


    定义

    用于描述应用的动作及其对应数据

    作用

    ①指定当前组件需要做的动作
    ②在不同组件之间传递数据(Activity、Service、BroadcastReceiver)

    使用

    指明组件要完成的动作

    显式意图
    在intent初始化时直接显式传入所需数据
    隐式意图
    通过action、category、data匹配隐式获取到AndroidManifest中设置好的内容
    具体使用在Activity分析中用到

    不同组件传递数据

    使用方法

    putExtra()、Bundle

    可传递的数据类型

    ①8大基本数据类型
    ②Intent、Bundle
    ③Serializable对象、Parcelable对象、CharSequence类型
    ④ArrayList,泛型参数类型为<Integer>、<? Extends Parcelable>、<Charsequence>、<String>

    具体使用

    在当前Activity中将传递的数据存到Intent中,再在新启动的Activity中取出Intent获取数据

    putExtra:

    // a. 创建Intent对象(显示Intent)
    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);     
    
    // b. 通过putExtra()方法传递一个字符串到SecondActivity;
    // putExtra()方法接收两个参数:第一个是键,第二个是值(代表真正要传递的数据)
    intent.putExtra("data","I come from FirstActivity");
    
    // c. 启动Activity
    startActivity(intent);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    数据获取:

    // 2. 数据取出(在被启动的Activity中)
    // a. 获取用于启动SecondActivit的Intent
    Intent intent = getIntent();
    // b. 调用getStringExtra(),传入相应的键名,就可得到传来的数据
    // 注意数据类型 与 传入时保持一致
    String data = intent.getStringExtra("data");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    bundle

    // 1. 数据传递
    // a. 创建Intent对象(显示Intent)
    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);     
    
    // b. 创建bundle对象
    Bundle bundle = new Bundle();
    
    // c. 放入数据到Bundle
    bundle.putString("name", "carson");
    bundle.putInt("age", 28);
    
    // d. 将Bundle放入到Intent中
    intent.putExtras(bundle);
    
    // e. 启动Activity
    startActivity(intent);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    数据获取:

    // 2. 数据取出(在被启动的Activity中)
    // a. 获取用于启动SecondActivit的Intent
    Intent intent = getIntent();
    
    // b. 通过Intent获取bundle
    Bundle bundle = intent.getExtras();
    
    // c. 通过bundle获取数据传入相应的键名,就可得到传来的数据
    // 注意数据类型 与 传入时保持一致
    String nameString = bundle.getString("name");
    int age = bundle.getInt("age");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    两种方式的区别

    ①当涉及连续传递数据时,使用putExtra需要写多次获取、写入数据才能完成操作;而Bundle只需要取出再写入即可
    ②可传递的内容:putExtra不可传递对象,而Bundle可以通过putSerializable传递实现了Serializable接口的对象。(序列化操作在之前有解析,Parcelable和Serializable都可以)

  • 相关阅读:
    Autovue集成全过程
    栈、队列、字符串
    vue 前端 问题整理
    Linux系统编程_网络编程:字节序、socket、server&client、ftp 云盘
    Flutter学习-数据层相关
    Spring Boot的新篇章:探索2.0版的创新功能
    二、数据库查询语句(多表查询篇)
    测试开发面试题
    高并发领域的奥秘:十年经验全公开,学习机会来了
    学会使用Pandas进行数据清洗
  • 原文地址:https://blog.csdn.net/MagicSound/article/details/125636273