Intent

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。

Intent这个英语单词的本意是“目的、意向、意图”。

Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。

activity、service和broadcast receiver之间是通过Intent进行通信的,而另外一个组件Content Provider本身就是一种通信机制,不需要通过Intent。

对于向这三种组件发送intent有不同的机制:

  • 使用Context.startActivity() 或 Activity.startActivityForResult(),传入一个intent来启动一个activity。使用 Activity.setResult(),传入一个intent来从activity中返回结果。
  • 将intent对象传给Context.startService()来启动一个service或者传消息给一个运行的service。将intent对象传给 Context.bindService()来绑定一个service。
  • 将intent对象传给 Context.sendBroadcast(),Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()等广播方法,则它们被传给 broadcast receiver。

     

组件名称

方法名称

Activity

startActvity( )

startActivity( )

Service

startService( )

bindService( )

Broadcasts

sendBroadcasts( )

sendOrderedBroadcasts( )

sendStickyBroadcasts( )

 

  • Intent的相关属性:

  • Intent由以下各个组成部分:
  • component(组件):目的组件
  • action(动作):用来表现意图的行动
  • category(类别):用来表现动作的类别
  • data(数据):表示与动作要操纵的数据
  • type(数据类型):对于data范例的描写
  • extras(扩展信息):扩展信息
  • Flags(标志位):期望这个意图的运行模式

显示Intent

Intent(Context packageContext,Class<?>cls)  函数需要接受两个参数,一个需要提供启动活动的上下文,另一个Class指定想要启动的目标活动

//设置一个监听器

button1.setOnClickListener(new ViewOnClickListener(){

        public void onClick(View v){

                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

                startActivity(intent);}

});

意图明显:在FirstActivity这个活动的基础上打开SecondActivity这个活动,然后通过startActivity()这个方法来执行intent

 

隐式Intent

指定抽象的action和category等信息,交给系统分析,当找到能够同时匹配的活动

为了达到跟以上显示Intent一样的效果,在AndroidMainfest.xml中SecondActivity活动标签下添加<intent-filter>

        <action android:name="com.example.activityest.ACTION_START" />

        <category android:name="android.intent.category.DEFAULT" />

        <category android:name="com.example.activitytest.MY_CATEGORY"/>

</intent-filter>

用来被响应,所以在FirstActivity.xml中需要添加

            Intent intent = new Intent("com.example.activitytest.ACTION_START");

            Intent.addCategory("com.example.activitytest.MY_CATEGORY");

            startActivity(intent);

转载于:https://my.oschina.net/u/3466217/blog/898850

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值