博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android——发送和接收广播
阅读量:6438 次
发布时间:2019-06-23

本文共 2168 字,大约阅读时间需要 7 分钟。

一,发送广播

 

利用Intent来发送广播。

使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去:

1,Context.sendBroadcast

2,Context.sendOrderedBroadCast

3,Context.sendStickyBroadcast

 

三种方法的区别:

1sendBroadcastsendStickyBroadcast发送出去的Intent,对于所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。

 

2,通过sendOrderedBroadCast方法发送出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行onReceive方法,相同优先级的BroadcastReceiver执行onReceive方法的顺序是没有保证的。

 

其中,sendStickyBroadcast主要的不同时,Intent在发送后会一直存在,并且在以后调用registerReceiver注册相匹配的Receiver时会把这个Intent对象直接返回给新注册的Receiver

 

通常我们在发送广播时候,使用的是sendBroadcast,但需要注意的是,在构造Intent时,必须用一个全局唯一的字符串标示其要执行的动作,通常使用应用程序的包名称,也可以采用自己定义的动作。如果要在Intent中传递其他数据,可以用IntentputExtra方法。

 

String Intent_Activity="lhc";

Intent intent=newIntent(Intent_Activity)

Intent.putExtra("参数",“参数值”);

sendBroadcast(intent);

二,接收广播

在于Activity相同的包下面定义广播器。广播器类要继承BroadcastReceiver类。

但是在接收到广播之后,要想处理相关事件,我们必须覆盖其OnReceiver方法,在该方法中实现对广播事件的相关处理,当安卓系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiver开始接受广播。

 

注意的是:OnReceive方法必须在5秒钟内执行完成,否则安卓系统会认为该组建失去响应,并提示用户强行关闭该组件。因此对于比较耗时的操作,要单独开一个线程。

三,声明广播

两种广播的注册方式:

1,代码注册广播

2,在AndroidMainfest.xml中注册

 

两种注册类型的区别:

1,第一种不是常驻型广播,也就是广播跟随程序的生命周期;

2,第二种是常驻类型的广播,也就是说当应用程序关闭后,如果有信息广播过来,程序广播接收器也会被系统调用自动运行。

四,示例

                     

           1,发送广播

                       

public class BroadCastActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		Button button=(Button)super.findViewById(R.id.button);		button.setOnClickListener(new OnClickListener(){			@Override			public void onClick(View arg0) {				String Intent_Action="com.example.broadcastdemp";				Intent intent=new Intent(Intent_Action); //				sendBroadcast(intent);//发送广播,并传递intent				Log.e("BroadcastReceiver","sendbroadcast");			}		});	}

          2,接收广播

public class BroadcastReceiverActivity extends BroadcastReceiver{	@Override	public void onReceive(Context arg0, Intent arg1) {		String Intent_Action=arg1.getAction();		if("com.example.broadcastdemp".equals(Intent_Action)){			Log.e("BroadcastReceiver","onReceive");		}	}}

      4,使用XML配置接收广播的类

             

    run 下看看:

                

转载地址:http://afuwo.baihongyu.com/

你可能感兴趣的文章
java算法2_二分查找法
查看>>
MySQL 5.6 & 5.7最优配置文件模板
查看>>
ffmpeg 怎么用
查看>>
JSP中 request.getRealPath("/xx/yy") 方法提示已经过时的替代方法
查看>>
实战 MDT 2012(六)---基于MAC地址的部署
查看>>
下载视频的一种简便方法
查看>>
C#中所有对象共同的基类是System.Object
查看>>
[鸟哥linux视频教程整理]04_02_Linux 权限及权限管理
查看>>
Linux运维工程师面试题第三套
查看>>
商务智能的需求驱动
查看>>
ThinkPad预装win8系统机型安装win7系统的操作指导
查看>>
JS高效关键字搜索---转
查看>>
PowerShell【变量篇】
查看>>
CSVN部署安装,实现web管理svn
查看>>
10-python-字典
查看>>
Codeforce915C
查看>>
2、内核的配置和移植
查看>>
BZOJ2115:[WC2011] Xor(线性基)
查看>>
BZOJ4520:[CQOI2016]K远点对(K-D Tree)
查看>>
Cassandra create a new user
查看>>