Intent和BroadCast(一)

我打算分四节记录我多广播的理解。能力有限,写得不对的地方望网友指正。
第一节:Intent
第二节:Broadcast
第三节:BroadcastReceive
第四节:对留出的问题做解答
----------------------------------------------------------------------------------------------
下面开始第一节,Intent,我们把它翻译成意图,intent是android中独有的一个组件,它能够在程序中发起一个动作,比如跳转到另一个activity,启动一个service。Intent分为显式的Intent和隐式的Intent。
先讲显式的Intent.显式的Intent比较简单,显式的意思就是很明显的展示出Intent的起点和终点,也就是谁有意图,这个意图是指向谁的,都很明白。先上代码:
Intent intent = new Intent(); //创建Intent对象
intent.setClass(this, OtherActivity.class); //指定intent的起点与终点
startActivity(intent); //启动intent
就这三句话,就实现了一次intent,当然显示的指出intent的方式有很多,大家可以看看API,这里就不多说了,但是我还要强调一下 setClassName()这个API,他有一个重载方法很特殊
    Intent android.content. Intent.setClassName( Context packageContext, String className)   
  Intent android.content. Intent.setClassName( String packageName, String className)
这两是一个重载方法,前者第一个参数是上下文对象,后者第一个参数是一个String。它们的第二个参数是相同的,String类型的className,这个className要求是一个带包名的完整名称,
(这里不能直接粘截图,有点蛋疼,有好使点的博客介绍我啊!插个图好麻烦。。。)
      Intent和BroadCast(一)
假如现在要跳转到本程序中的MainActivity中,那么className要写作"com.example.alarm.MainActivity",对于Context这个参数我就不说了,String packageName这个参数要求指定一个包名,有了这个参数,那么这个方法能实现一个特别有用的功能,就是启动其它应用,当然这个应用没有加权限。假如我手机上还有一个weather应用,其开发包名是com.example.weather,那么我可以用intent.setClassName(" com.example.weather"," com.example.weather.LoginActivity");启动手机上的weather这个应用了。
当然,如果你需要在跳转到另一个地方时,带上一些数据,你可以实用Intent的putExtra()这个API,你可以根据你的参数类型选择它的重载方法。
下面讲隐式的Intent。隐式Intent就是没有明确的指出意图的终点,它指定0个或者多个动作(action)、类别(category)、数据(URI和数据类型),如果某个Activity或者Service配置的<intent-filter>符合这个intent指定的条件,那么这个Activity或者Service将被启动。
看代码:
编写一个intent
Intent和BroadCast(一)
设定<intent_filter>
Intent和BroadCast(一)
启动程序,用一个button事件启动上面的intent,界面跳转到OtherActivity。如果我们没有给intent设定数据(URI和数据类型),那么只要intent所设的条件都在<intent-filter>中,那么这个Activity就会被启动,如果设定了数据 (URI和数据类型),又会是怎么样呢?一个intent会不会启动多个activity呢?这个两个问题留给大家去实践一下,我将在第四节中解答。
补充一句,startActivity(intent);会自动添加一个intent category,也就是
    <category android:name="android.intent.category.DEFAULT" />
如果上面<intent-filter>没有这一句则无法被启动。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值