当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 平板电脑智能家居应用层 intent类解析
平板电脑智能家居应用层 intent类解析
时间:2016-12-14作者:华清远见

Intent 是android.content的一类API,android官方网站给出的定义是:

可见intent类是一种在不同组件之间传输结构化信息的工具,并能在组件中初始化其它的组件并返回结果,听起来,有些抽象。

Intent是java.lang.Object的子类,可以实例化一个对象,做为参数传递给方法startActivity,启动另外一个activity,例如在我们的平板智能家居的应用层中,主要有两个“activity”,在主activity中,创建一个intent对象:

调用intent的构造函数,并将SmartHomeActivity和NodeInfoActivity建立联系,然后通过调用去启动NodeInfoActivitiy,这样就完成了SmartHomeActivitiy向NodeInfoActivity的转换,当然,我们还调用了intent的putExtra方法向NodeInfoActivtity传递了节点信息:
        另外,intent还可以作为方法sendBroadcast的参数向广播接收器传递信息,例如,定义一个按键返回的broadcastReceiver:

广播接收器做出相应后,会强制关闭nodeinfactivity,并保存退出前nodeinfo里面的数据。

当然,要使广播接收器能正常工作,需要进行注册,我们注册针对BackReceiver的广播接收器:

同时对广播接收器进行了过滤设置,添加自定义的行为:cn.com.smarthome.android.back

这样在NodeInfoActivity中响应返回按键时:

通过实例化一个从NodeInfoActivity到SmartHomeActivity的intent, 并添加响应的动作,就可以匹配SmartHomeActivity的广播接收器,并把当前nodeinfo的值传递给backReceiver,调用sendBroadcast(intent),完成一次Intent对象的传递。

对于从传感器传来的底层信息,需要通过SmartHomeActivity传递数据到NodeInfoActivity进行实时更新,这样,就需要在NodeInfoActivity中注册不同类型的广播接收器,我们将数据类型大致分为两类,一类是包含温度、湿度、光照、三轴重力加速元素的结点信息,一类是rfid信息,我们需要在NodeInfoActivity 中注册针对这两类数据类型的广播接收器,代码如下:

在SmartHomeActivity中发送针对这两个广播接收器的广播:

在NodeInfoActivity中分别响应结点更新信息和rfid信息:

这样就实现了NodeInfoActivity数据的实时更新。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)