Android移动应用设计与开发 教学课件 ppt 作者 黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章

上传人:E**** 文档编号:89342246 上传时间:2019-05-23 格式:PPT 页数:16 大小:1.41MB
返回 下载 相关 举报
Android移动应用设计与开发 教学课件 ppt 作者  黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章_第1页
第1页 / 共16页
Android移动应用设计与开发 教学课件 ppt 作者  黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章_第2页
第2页 / 共16页
Android移动应用设计与开发 教学课件 ppt 作者  黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章_第3页
第3页 / 共16页
Android移动应用设计与开发 教学课件 ppt 作者  黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章_第4页
第4页 / 共16页
Android移动应用设计与开发 教学课件 ppt 作者  黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《Android移动应用设计与开发 教学课件 ppt 作者 黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章》由会员分享,可在线阅读,更多相关《Android移动应用设计与开发 教学课件 ppt 作者 黄宏程 胡敏 陈如松 Android移动应用设计与开发--第07章(16页珍藏版)》请在金锄头文库上搜索。

1、Android 移动应用设计与开发,第7章 广播,7.1 发送和接收广播 7.1.1 发送广播 7.1.2 接收广播 7.1.3 声明广播 7.1.4 广播的生命周期 7.1.5 常见广播Action常量 7.2 广播实例,本章导读,7.1 发送和接收广播,在Android里面有各式各样的广播,比如:电池的状态变化、信号的强弱状态、电话的接听和短信的接收等等,本节将会介绍系统发送、监听这些广播的机制,7.1.1 发送广播,可以利用Intent来发送广播,在需要发消息的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将该Intent对象广播出去:,(1)发送广

2、播的方法,7.1.1 发送广播,(2)3种发送广播方法的区别,sendBroadcast或sendStickyBroadcast发送出去的Intent,对于所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。 通过sendOrderedBroadcast方法发送出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行onReceive方法,相同优先级的BroadcastReceiver执行onReceiv

3、e方法的顺序是没有保证的。 sendStickyBroadcast主要的不同是,Intent在发送后会一直存在,并且在以后调用registerReceiver注册相匹配的Receiver时会把这个Intent对象直接返回给新注册的Receiver。,7.1.1 发送广播,(3)发送广播示例,通常我们在发送广播时使用的是sendBroadcast()方法,但需要注意的是,在构造Intent时必须用一个全局唯一的字符串标识其要执行的动作,通常使用应用程序包的名称,也可以采用自己定义的动作。如果要在Intent中传递其他的数据,可以用Intent的putExtra()方法。下面为发送一带有额外数据的

4、广播的简单代码:,7.1.2 接收广播,在程序发送出去广播之后,必然要有接收器来接收广播。在Android下,要想接收广播信息,那么这个广播接收器就得我们自己来实现。 我们可以继承BroadcastReceiver类,这就是一个广播接收器。但是,在接收到广播之后,要想处理相关事件,我们必须覆盖其onReceiver()方法,在该方法中实现对广播事件的相关处理,当Android系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiver开始接收广播。 以下为实现广播接收的过程:,public class MyBroadcastReceiver extends Broadcast

5、Receiver / action名称 String Intent_Action = com.android.BroadcastReceiverDemo; public void onReceive(Context context, Intent intent) if ( intent.getAction().equals( Intent_Action) /相应事件的处理 ,注意:BroadcastReceiver类中的onReceiver()方法必须要在5秒钟内执行完事件,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。因此,对于比较耗时的响应事件,可以另开一线程,单独

6、进行事件的处理。,7.1.3 声明广播,要想使用广播接收器来响应相应的事件,必须把广播接收器注册到系统里,让系统知道我们有这个广播接收器。当有广播到来时,系统会找到匹配该广播的广播接收器,之后进行相应事件的处理。这里有两种广播注册方法:,(1)广播注册的方法,代码 注册 广播,/生成广播接收器 MyBroadcastReceiver receiver = new MyBroadcastReceiver (); /实例化过滤器并设置要过滤的广播 IntentFilter intentFilter = new IntentFilter(“Intent_Action“); /注册广播 registe

7、rReceiver(receiver,intentFilter);,.在AndroidManifest.xml中配置广播,7.1.3 声明广播,(2)两种广播注册方法的区别,第一种不是常驻型广播,也就是说广播跟随程序的生命周期 第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播过来,程序广播接收器也会被系统调用自动运行 广播接收器被注册到系统之后,当系统接收到广播时,通过广播的动作选出对应的广播接收器,再由广播接收器完成相应事件的响应,7.1.4 广播的生命周期,(1)广播的生命周期流程,7.1.4 广播的生命周期,(2)实例分析,下图为发送广播界面:,当我们点击按钮时,它向Androi

8、d发送一个广播。通过Log视窗可以看到Android广播的生命周期,如下图所示 :,7.1.5常见广播Action常量,对于广播来说,Action指被广播出去的动作。理论上Action可以为任何字符串,而与Android系统应用有关的Action字符串以静态字符串常量的形式定义在了Intent类中。Action包含很多种,例如呼入、呼出电话、接受短信等等,下面是Android定义好的常见的一些标准广播常量,如下表所示:,7.2 广播实例,(1)实例说明:当用户执行登录/注销操作,若登录/注销成功,系统会发送登录/注销成功的广播。如:广播接收器接收到的Action为表示登录成功的Action,界

9、面进入主界面,并且Toast组件提示登录,如下图所示:,7.2 广播实例,import com.androidbook.client.R; import com.androidbook.client.application.ClientApplication; import work.mode.RequestParam; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPref

10、erences; import android.content.SharedPreferences.Editor; import android.widget.Toast; public class LoginLogoutBroadCast extends BroadcastReceiver public static final String BROADCAST_LOGIN = “login“; public static final String BROADCAST_LOGOUT= “logout“;,Override public void onReceive(Context conte

11、xt, Intent intent) /接收登录的广播并保存用户的在线状态 if(intent.getAction().equals(BROADCAST_LOGIN) ) Toast.makeText(context, context.getText(R.string.login), Toast.LENGTH_SHORT) .show(); SharedPreferences sharedPreferences = (ClientApplication) context.getApplicationContext().getLoginUserInfo(); Editor editor = sh

12、aredPreferences.edit(); editor.putInt(RequestParam.STATUS, RequestParam.ONLINE); mit(); return; ,(2)实例代码,7.2 广播实例,/接收注销的广播并保存用户的离线状态 if(intent.getAction().equals(BROADCAST_LOGOUT) ) Toast.makeText(context, context.getText(R.string.menu_logout), Toast.LENGTH_SHORT) .show(); SharedPreferences sharedPr

13、eferences = (ClientApplication) context.getApplicationContext().getLoginUserInfo(); Editor editor = sharedPreferences.edit(); editor.putInt(RequestParam.STATUS, RequestParam.OFFLINE); mit(); Intent service = new Intent(context, MsgService.class); context.stopService(service); return;,注意:广播接收者可以接收系统自带的广播,也可以接收自定义的广播,那么相应地Intent中的 Action可以使用系统相应服务的特0定Action,也可以是自定义的Action。,相应地在注册的广播接收器中必须指明对应的Action,以使广播发出之后,有相应的接收器来接收,Thank You !,第7章 结束,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号