资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,Android,程序设计,第,8,章 使用,Broadcast Receiver,第,8,章 使用,Broadcast Receiver,Receiver,概况,Broadcast Receiver,包含两部分功能,:,发送和接收广播消息,调用,sendBroadCast,(),方法发送广播,即发送一个,Intent,发送广播只能启动广播接收器,Receiver,对象,接收广播,Receiver,它和,Activity,、,Service,在架构上是平等的,Receiver,没有界面,其生命周期非常短,在执行,onReceiver,(),方法中才有效,一旦,onReceiver,(),方法执行完毕,该,Receiver,的生命期就结束,避免在,onReceiver,(),内部执行一些具有回调功能的异步函数。,广播消息分为两类,:,系统定义的一些广播消息和自定义广播消息,接收消息的方式,:,静态接收,:,当程序安装时就声明其内部的广播接收器,动态接收,:,通过调用,registerReceiver,(),方法向系统注册一,个,Receiver,动态接收多用于一个应用程序的内部,每个接收器,(Receiver),内部都有一个,onReceiver,(),方法。,8.1 Receiver,概况,第,8,章 使用,Broadcast Receiver,广播消息的方式,同步广播和异步广播,8.1 Receiver,概况,Receiver1:,onReceiver,(),sendOrderBroadcast,(),同步处理,同步广播流程,Receiver2:,onReceiver,(),Receiver3:,onReceiver,(),ReceiverN,:,onReceiver,(),Receiver1:,onReceiver,(),sendBroadcast,(),异步处理,异步广播流程,Receiver2:,onReceiver,(),ReceiverN,:,onReceiver,(),第,8,章 使用,Broadcast Receiver,实例,1,定义一个广播接收器,静态声明响应的消息,8.2,静态创建,Receiver,public class,logoDisplayReceiver,extends,BroadcastReceiver,public void,onReceive(Context,context,Intent,intent),Intent,myStarterIntent,=new,Intent(context,startupReceiver.class,);,myStarterIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK,);,context.startActivity(myStarterIntent,);,第,8,章 使用,Broadcast Receiver,动态创建,Receiver,不需要在,xml,文件中声明该,Receiver,需要调用,registerReceiver,(),方法向应用程序的,Context,注册,一般在程序的,onPause,(),方法中调用,unregisterReceiver,(),以注销,Receiver,对象,如果没有注销,Receiver,那么该,Receiver,会一直处于接收广播消息就绪的状态,直到该程序的,Context,被销毁,8.3,动态创建,Receiver,第,8,章 使用,Broadcast Receiver,实例,2,8.3,动态创建,Receiver,public class,TimeChangedReceiver,extends,BroadcastReceiver,public void,onReceive(Context,context,Intent,intent),showNotify(context,);,static,int,mChangeTimes,=0;,public,showNotify(Context,context),Toast.makeText(context,时间改变次数,:+(,mChangeTimes+),Toast.LENGTH_SHORT).show,();,TimeChangedReceiver,mTimeChangedReceiver,=null;,IntentFilter,mReceiverFilter,=null;,public void,onCreate(Bundle,savedInstanceState,),super.onCreate(savedInstanceState,);,setContentView(R.layout.main,);,mReceiverFilter,=new,IntentFilter,();,mReceiverFilter.addAction(Intent.ACTION_TIME_CHANGED,);,mTimeChangedReceiver,=new,TimeChangedReceiver,();,protected void,onResume,(),registerReceiver(mTimeChangedReceiver,mReceiverFilter,);,super.onResume,();,protected void,onPause,(),/,unregisterReceiver(mTimeChangedReceiver,);,super.onPause,();,第,8,章 使用,Broadcast Receiver,动态创建,Receiver,的作用,在同一个应用程序中,为,Activity,和,Service,传递消息。,Service,除非与,Activity,绑定,否则无法调用,Service,中的方法,使用,Receiver,可以完成一个轻量级的,Service,调用,8.3,动态创建,Receiver,Activity,调用,1:,setAction,();,sendBroadCast,();,.,.,.,调用,N:,setAction,();,sendBroadCast,();,调用,Service,示意图,Service:,method1():,.,.,.,methodN,():,Receiver:,onReceiver,(),switch(getAction,),
展开阅读全文