Intent中文翻译过来是意图,但更合理的意思是消息传递器。
1.Intent在Android中是如何运行的呢?
作为 消息传递器,首先的具备 “装载”和 “卸载”消息的能力,在Android源代码中,Intent其实是用了普通消息包裹(Buddle)来装载数据。
代码来自android.content.Intent.class
public Intent putExtra(String name, CharSequence value) {
if (mExtras == null) {
mExtras = new Bundle(); //这是普通消息包裹
}
mExtras.putCharSequence(name, value);
return this;//这是一个不错的发现哦
}
//添加额外数据,可以无限制是用
public Intent putExtra(String name, Bundle value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putBundle(name, value);
return this;
}
//这里是读取部分(卸载)
public String getStringExtra(String name) {
return mExtras == null ? null : mExtras.getString(name);
}
这里只说明android的数据部分
2.Intent数据传递是需要方向的,方向是哪儿?
这里需要说明的是Intent的消息是广播出去的,所以说方向是系统。
3.Intent是如何找到指定的目标程序的呢?
可以说消息是发送出去了,但是为了找到适合的目标,需要进行一些列的检索,这些检索条件来自Action,Componet,setType,Catagory,PackageName
我们经常能看到,当我们发送一个Intent时,不一定只会有一个Activity或者BroadcastReceiver或者应用程序响应,所以这恰恰说明了Intent是一种被广播出去的消息。
4.总结
Intent 是一种消息传递器,课设置和获取消息
Intent 会被“广播给所有程序",进而筛选出适合条件的程序
Intent 是可以跨进程,跨应用传递的
Intent 携带有检索条件