首页 > 代码库 > Android中Intent的深入理解

Android中Intent的深入理解

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 携带有检索条件









Android中Intent的深入理解