Intent详解
intent概述
Android应用程序中的三种核心组件(Activity、Service、BroadcastRecive)彼此之间是独立的,他们之间的信息传递是通过intent来完成的,intent起着媒介作用,用于传递组件间调用的相关信息。
Intent的构成
Intent封装了要执行的操作的各种信息,intent对象中包含了多个属性,每个属性代表该信息的不同特征。
1 组件(Component):指定Intent的目标组件的名称,即组件的类名。
2 动作(Action):用来表现意图的行动
3 类别(Category):用来表现动作的类别
4 数据(Data):表示与动作要操纵的数据
5 数据类型(Type):对于data范围的描写
6 附加信息(Extras):扩展信息
7 标志位(Flag):期望这个意图的运行模式
Intent的使用
Intent分为显式Intent和隐式Intent
1 显式Intent:指明了组件的intent,通过指定具体组件来通知应用来启动对应的组件。
Intent intent=new Intent(Context con Class class);
2 隐式Intent:没有指明组件的Intent,通过Action Data等属性来确定组件,让系统来筛选出合适的Activity。筛选是根据所有的intent-filter来筛选。
AndroidManifest.xml文件中:
activity
android:name="com.example.intentTest.OtherActivity
intent-filter
action android:name="test"/
category android:name="android.intent.category.DEFAULT"/
/intent-filter
/activity
在MainActivity,才可以通过这个action name找到上面的Activity。
Intent intent = new Intent();
intent.setAction("test");
startActivity(intent);
对于Activity、Service、BroadcastRecive这三种组件有不同机制:
1 使用Context.startActivity() 或Activity.startActivityForResult(), 传入一个intent来启动一个activity.
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
startActivityForResult(intent, 0);
2 使用 Activity.setResult(), 传入一个intent来从activity中返回结果.
OrherActivity.this.setResult(0, intent);
3 将intent对象传给Context.startService()来启动一个service或者传消息给一个运行的service.
Context.startService(intent)
4 将intent对象传给 Context.bindService()来绑定一个service.
Context.bindService(Intent service, ServiceConnection conn, int flags);
5 将intent对象传给 Context.sendBroadcast(),
Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()等广播方法,则它们被
传给 broadcast receiver.
Context.sendBroadcast(Intent intent)
Inent保存数据的方法:我们可以使用多个重载的方法来存放和取出数据
使用putExtra()系列方法向Intent对象中传递数据
putExtras(String name, XXX date)
XXX表示数据类型
使用getExtra()系列方法从Intent对象当中取出数据
getExtras(String name,XX)
XX表示初始值
Intent是一种运行时绑定机制,在程序运行的过程中链接两个不同的组件。intent的本意是“目的、意向、意图”的意思。Intent当中最重要的是date和action。
Comments | NOTHING