activity 和 intent 机制

本文主要介绍了Android开发中的Activity和Intent机制。Activity作为用户交互界面,有onCreate、onResume和onDestroy等关键生命周期方法。Intent是连接组件的桥梁,用于组件间交互,分为显式和隐式操作,广泛应用于NFC标签调用。Intent属性包括action、data、type等,通过匹配AndroidManifest.xml中的intent-filter来解析并启动相应组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分 activity

所谓activity 其实就是布满整个窗口或者悬浮于其他窗口上的交互界面。

一个应用程序通常由多个activity构成,都会在Manifest.xml中指定1个主的activity。

< activity 
			android: label= " @string/app_name"
			android:name=".MainActivity" >
			<intent-filter >
			  <action android:name="android.intent.action.MAIN"  />
			  <category android:name="android.intent.category.LAUNCHER" >
			 <intent-filter >
</ activity>

onCreate: 当1个activity初次运行时,该方法被调用,里面的bundle类型的参数可以访问以前存储的状态。

onResume: 当1个Activity 开始和用户交互时,该方法被调用。这时,该activity是在Activity栈的顶部,处于前台进程中。可在这
个方法中去获取NFC数据(如读Tag的数据)。

onDestroy: Activity 被从内存中移除,一般发生在执行finish方法或者android回收内存时。

第二部分 intent filter

NFC的标签调用机制大量的使用了 Intent-Filter。

Intent 负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,android 则根据此Intent 的描述,负

责找到对应的组件,将Intent 传递给调用的组件,并完成组件的调用。

Intent不仅可用于应用程序之间,还可用于应用程序内部的 activity/service之间的交互。

专用于提供组件相互调用的信息,实现调用者与被调用者之间的解耦。

(1)Intent属性包括 action , data, type , category , component ,extras 等,每个属性既可以在Intent 类的方式进行设置,也可

以通过xml直接定义。

action: 字符串常量,指Intent将要完成的动作,如 ACTION_SCREEN_ON 为亮屏,可通过setAction来设置 
	
Intent Action 属性, 通过getAction来获取 Intent Action 属性。

data:不同的action有不同的data

type:  数据类型,显式指定Intent的数据类型

category:类别,包含了处理该Intent的组件的种类信息,如 CATEGORY_HOME 表示回到HOME界面

component :直接指定目标组件类的名称,如果不指定,则会在以上4个属性中进行查找,找到1个匹配的组件。

Extras:附加信息,如果发邮件,可将标题正文保存在extras里,传递给对应组件

(2)Intent操作方式包括显式操作和隐式操作

显式操作:指定接收者

Intent intent = new Intent(Activity.Main.this,Activity2.class); // 指定了目标Activity2, android 不需要再去解析

startActivity(intent);

隐式操作:在构造 intent时,不指定接收者,有利于降低发送者和接收者之间的耦合。如NFC中的标签调度系统。

(3)intent 解析

通过查找已注册在AndroidManifest.xml中的所有intent-filter,将intent对象中的内容与intent-filter比较,android打开可以接收intent的组件

    <activity android:name=".BeamShareActivity"
        android:finishOnCloseSystemDialogs="true"
        android:theme="@android:style/Theme.Translucent"
        android:label="@string/android_beam"
        android:noHistory="true"
        android:excludeFromRecents="true">
        <intent-filter>    // 通过 action,type,category进行判断
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="*/*" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="*/*" />
        </intent-filter>
    </activity>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值