Android移动应用设计与开发课件

上传人:2127513****773577... 文档编号:242757215 上传时间:2024-09-02 格式:PPT 页数:16 大小:1.17MB
返回 下载 相关 举报
Android移动应用设计与开发课件_第1页
第1页 / 共16页
Android移动应用设计与开发课件_第2页
第2页 / 共16页
Android移动应用设计与开发课件_第3页
第3页 / 共16页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,Android,移动应用设计与开发,Android 移动应用设计与开发,第,7,章 广播,7.1,发送和接收广播,7.1.1,发送广播,7.1.2,接收广播,7.1.3,声明广播,7.1.4,广播的生命周期,7.1.5,常见广播,Action,常量,7.2,广播实例,本章导读,第7章 广播本章导读,7.1,发送和接收广播,在,Android,里面有各式各样的广播,比如:电池的状态变化、信号的强弱状态、电话的接听和短信的接收等等,本节将会介绍系统发送、监听这些广播的机制,7.1 发送和接收广播,7.1.1,发送广播,可以利用,Intent,来发送广播,在需要,发消息,的地方,创建一个,Intent,对象,,将信息的内容和用于过滤的信息封装起来,通过以下,三种方法,将该,Intent,对象广播出去:,(,1,)发送广播的方法,发送广播方法,Context.send,Broadcast,方法,Context.send,OrderedBroadcast,方法,Context.sendSticky,Broadcast,方法,7.1.1 发送广播可以利用Intent来发送广播,在需要发,7.1.1,发送广播,(,2,),3,种发送广播方法的区别,sendBroadcast,或,sendStickyBroadcast,发送出去的,Intent,,对于,所有满足条件,的,BroadcastReceiver,都会执行其,onReceive,方法。但若有多个满足条件的,BroadcastReceiver,,其执行,onReceive,方法的,顺序,是,没有保证,的。,通过,sendOrderedBroadcast,方法发送出去的,Intent,,会根据,BroadcastReceiver,注册时,IntentFilter,设置的,优先级的顺序,来执行,onReceive,方法,相同优先级的,BroadcastReceiver,执行,onReceive,方法的顺序是没有保证的。,sendStickyBroadcast,主要的不同是,,Intent,在发送后会一直存在,并且在以后调用,registerReceiver,注册相匹配的,Receiver,时会把这个,Intent,对象直接返回给新注册的,Receiver,。,7.1.1 发送广播(2)3种发送广播方法的区别sendBr,7.1.1,发送广播,(,3,)发送广播示例,通常我们在发送广播时使用的是,sendBroadcast(),方法,,但需要注意的是,在构造,Intent,时必须用一个,全局唯一,的字符串标识其要执行的动作,通常使用应用程序包的名称,也可以采用自己定义的动作。如果要在,Intent,中传递其他的数据,可以用,Intent,的,putExtra(),方法。下面为发送一带有额外数据的广播的简单代码:,String Intent_Action = com.android.BroadcastReceiverDemo;,Intent intent = new Intent,(,Intent_Action,),;,Intent.putExtra,(“参数”,“参数值”);,SendBroadcast,(,intent,);,7.1.1 发送广播(3)发送广播示例通常我们在发送广播时使,7.1.2,接收广播,在程序发送出去广播之后,必然要有接收器来接收广播。在,Android,下,要想接收广播信息,那么这个广播接收器就得我们,自己来实现,。,我们可以,继承,BroadcastReceiver,类,这就是一个,广播接收器,。但是,在接收到广播之后,要想,处理,相关,事件,,我们必须覆盖其,onReceiver(),方法,,在该方法中实现对广播事件的相关处理,当,Android,系统接收到与之匹配的广播消息时,会自动启动此,BroadcastReceiver,开始接收广播。,以下为实现广播接收的过程:,public class MyBroadcastReceiver extends BroadcastReceiver ,/ action,名称,String Intent_Action = com.android.BroadcastReceiverDemo;,public void onReceive(Context context, Intent intent) ,if ( intent.getAction().equals( Intent_Action) ,/,相应事件的处理,注意:,BroadcastReceiver,类中的,onReceiver(),方法,必须要在,5,秒钟内,执行完事件,否则,Android,系统会认为该组件,失去响应,,并提示用户强行关闭该组件。因此,对于比较耗时的响应事件,可以另开一线程,单独进行事件的处理。,7.1.2 接收广播在程序发送出去广播之后,必然要有接收器来,7.1.3,声明广播,要想使用广播接收器来响应相应的事件,必须把广播接收器注册到系统里,,让系统知道,我们有这个,广播接收器,。当有广播到来时,系统会找到匹配该广播的广播接收器,之后进行相应事件的处理。这里有,两种广播注册方法,:,(,1,)广播注册的方法,代码,注册,广播,/,生成广播接收器,MyBroadcastReceiver receiver =newMyBroadcastReceiver ();,/,实例化过滤器并设置要过滤的广播,IntentFilter intentFilter = new IntentFilter(Intent_Action);,/,注册广播,registerReceiver(receiver,,,intentFilter);,.在,AndroidManifest.xml,中配置广播,7.1.3 声明广播要想使用广播接收器来响应相应的事件,必须,7.1.3,声明广播,(,2,)两种广播注册方法的区别,第一种不是常驻型广播,也就是说广播跟随程序的生命周期,第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播过来,程序广播接收器也会被系统调用自动运行,广播接收器被注册到系统之后,当系统接收到广播时,通过广播的动作选出对应的广播接收器,再由广播接收器完成相应事件的响应,7.1.3 声明广播(2)两种广播注册方法的区别第一种不是常,7.1.4,广播的生命周期,(,1,)广播的生命周期流程,发送广播,接收广播,结束,7.1.4 广播的生命周期(1)广播的生命周期流程发送广播接,7.1.4,广播的生命周期,(,2,)实例分析,下图为发送广播界面:,当我们点击按钮时,它向,Android,发送一个广播。通过,Log,视窗可以看到,Android,广播的生命周期,如下图所示:,7.1.4 广播的生命周期(2)实例分析下图为发送广播界面:,7.1.5,常见广播,Action,常量,对于广播来说,,Action,指被广播出去的动作。理论上,Action,可以为任何字符串,而与,Android,系统应用有关的,Action,字符串以静态字符串常量的形式定义在了,Intent,类中。,Action,包含很多种,例如呼入、呼出电话、接受短信等等,下面是,Android,定义好的常见的一些标准广播常量,如下表所示:,常量,值,意义,android.intent.action.BOOT_COMPLETED,ACTION_BOOT_COMPLETED,系统启动,android.intent.action.ACTION_TIME_CHANGED,ACTION_TIME_CHANGED,时间改变,android.intent.action.ACTION_DATE_CHANGED,ACTION_DATE_CHANGED,日期改变,android.intent.action.ACTION_TIMEZONE_CHANGED,ACTION_TIMEZONE_CHANGED,时区改变,android.intent.action.ACTION_BATTERY_LOW,ACTION_BATTERY_LOW,电量低,android.intent.action.ACTION_MEDIA_EJECT,ACTION_MEDIA_EJECT,插入或拔出外部媒体,android.intent.action.ACTION_MEDIA_BUTTON,ACTION_MEDIA_BUTTON,按下多媒体,android.intent.action.ACTION_PACKAGE_ADDED,ACTION_PACKAGE_ADDED,添加包,android.intent.action.ACTION_PACKAGE_REMOVED,ACTION_PACKAGE_REMOVED,删除包,android.intent.action.ACTION_POWER_CONNECTED,ACTION_POWER_CONNECTED,插上外部电源,android.intent.action.ACTION_POWER_DISCONNECTED,ACTION_POWER_DISCONNECTED,断开外部电源,android.provider.Telephony.SMS_RECEIVED,Telephony.SMS_RECEIVED,接收短信,android.intent.action.Send,Send,发送邮件,7.1.5常见广播Action常量 对于广播来,7.2,广播实例,(,1,)实例说明:当用户执行登录,/,注销操作,若登录,/,注销成功,系统会发送登录,/,注销成功的广播。如:,广播接收器接收到的,Action,为表示登录成功的,Action,,界面进入主界面,并且,Toast,组件提示登录,如下图所示:,7.2 广播实例(1)实例说明:当用户执行登录/注销操作,若,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.SharedPreferences;,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 context, 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 = sharedPreferences.edit();,editor.putInt(RequestParam.,STATUS, RequestParam.,ONLINE,);,mit();,return,;,(,2,)实例代码,7.2 广播实例import com.androidboo,7.2,广播实例,/,接收注销的广播并保存用户的离线状态,if,(intent.getAction().equals(,BROADCAST_LOGOUT,) ) ,Toast.,makeText,(context,context.getText(R.string.,menu_logout,),Toast.,LENGTH_SHORT,),.show();,SharedPreferences sharedPreferences = (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 intent = new Intent(,自定义广播内容,);sendBroadcast(intent);,注意:广播接收者可以接收系统自带的广播,也可以接收自定义的广播,那么相应地,Intent,中的,Action,可以使用系统相应服务的特,0,定,Action,,也可以是自定义的,Action,。,相应地在注册的广播接收器中必须指明对应的,Action,,以使广播发出之后,有相应的接收器来接收,7.2 广播实例/接收注销的广播并保存用户的离线状态In,Thank You !,第,7,章 结束,Thank You !第7章 结束,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!