初学Android,BroadcastReceiver之发送接收广播(七十)

news/2024/7/4 23:10:24 标签: android, action, button, filter, class, service
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

BroadcastReceiver用于监听系统全局广播消息,由于BroadcastReceiver是一种全局的监听器,因此它可以非常方便地实现系统中不同组件之间通信

启动它需要两步

1.创建需要启动的BroadcastReceiver的Intent

2.调用Context的SendBroadcast或sendOrederedBroadcast方法来启动指定的BroadcastReceiver

这其中关键是创建Intent时,要setAction("xxx"),而BroadcastReceiver就要创建它的class="tags" href="/tags/FILTER.html" title=filter>filter,或在代码中指定,或在xml中指定

下面以一个简单例子说明,例子是一个向广播发送消息的程序

发送端主界面代码

class="language-java">package WangLi.Service.Broadcast;

import class="tags" href="/tags/ANDROID.html" title=android>android.app.Activity;
import class="tags" href="/tags/ANDROID.html" title=android>android.content.Intent;
import class="tags" href="/tags/ANDROID.html" title=android>android.os.Bundle;
import class="tags" href="/tags/ANDROID.html" title=android>android.view.View;
import class="tags" href="/tags/ANDROID.html" title=android>android.view.View.OnClickListener;
import class="tags" href="/tags/ANDROID.html" title=android>android.widget.Button;

public class Broadcast extends Activity {
	Button send;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取界面中的按钮
		send = (Button) findViewById(R.id.send);
		send.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// 创建Intent对象
				Intent intent = new Intent();
				// 设置Intent的Action属性
                intent.setAction("WangLi.Test");
                intent.putExtra("msg", "简单的消息");
                //发送广播
                sendBroadcast(intent);
			}
		});
	}
}
接着创建一个BroadcastReceiver监听器

class="language-java">package WangLi.Service.Broadcast;

import class="tags" href="/tags/ANDROID.html" title=android>android.content.BroadcastReceiver;
import class="tags" href="/tags/ANDROID.html" title=android>android.content.Context;
import class="tags" href="/tags/ANDROID.html" title=android>android.content.Intent;
import class="tags" href="/tags/ANDROID.html" title=android>android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		Toast.makeText(
				context,
				"接收到的Intent的Action为:" + intent.getAction() + "\n消息内容是:"
						+ intent.getStringExtra("msg"), 5000).show();
	}

}

向AndroidManifest.xml中配置该receiver,主要是intent class="tags" href="/tags/FILTER.html" title=filter>filter

class="language-html">        <receiver class="tags" href="/tags/ANDROID.html" title=android>android:name="MyReceiver" >
            <intent-class="tags" href="/tags/FILTER.html" title=filter>filter>
                <class="tags" href="/tags/ACTION.html" title=action>action class="tags" href="/tags/ANDROID.html" title=android>android:name="WangLi.Test" />
            </intent-class="tags" href="/tags/FILTER.html" title=filter>filter>
        </receiver>


要注意的是BroadcastReceiver的过期时间为10秒,如果是耗时的操作应放在service中去完成,BroadcastReceiver只适合短时间的计算任务,因为它的生命周期非常短






http://www.niftyadmin.cn/n/1411270.html

相关文章

iOS多线程---GCD中线程的通信

在子线程的任务完成后&#xff0c;有时候需要从子线程回到主线程&#xff0c;刷新UI。 从子线程中回到主线程&#xff0c;以前已经写过一种方法&#xff1a; [self.imageView performSelectorOnMainThread:selector(setImage:) withObject:image waitUntilDone:NO]; 现在GCD又提…

NodeJs学习(流)——Stream

1、流是一个抽象接口&#xff0c;在NodeJs中&#xff0c;流是很多内置对象的的接口实现&#xff0c;比如&#xff1a;http的request请求就是一个流&#xff0c;标准的输出stdout也有对流的接口实现。 流分为这样的几种类型&#xff1a; Readable——可读Writable——可写Dupl…

初学Android,BroadcastReceiver之有序广播(七十一)

Broadcast分为两种广播&#xff0c;普通广播&#xff0c;是异步的&#xff0c;可以在同一时刻被所有接收者收到&#xff0c;消息传递效率比较高&#xff0c;但缺点是接收者不能将结果传递给下一个接收者&#xff0c;且无法终止Broadcast Intent的传播 有序广播的接收者则将按预…

为OLED屏添加GUI支持3:字库

为OLED屏添加GUI支持3&#xff1a;字库本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.环境&#xff1a;主机:WIN10开发环境:MDK5.13MCU:STM32F103说明&#xff1a;GUI中有字库方能显示汉字。英文&#xff0c;数字等。英文数字等ASCII码128个字符保存显示easy。…

NodeJs学习——模块系统

module.exports与exports的区别 每一个node.js执行文件&#xff0c;都自动创建一个module对象&#xff0c;同时&#xff0c;module对象会创建一个叫exports的属性&#xff0c;初始化的值是 {} module.exports {}; Node.js为了方便地导出功能函数&#xff0c;node.js会自动地…

初学Android,使用Service的音乐播放器(七十二)

下面的例子是一个音乐播放器&#xff0c;利用了前几篇学到的知识 先定义一个Service&#xff0c;它会在播放状态发生改变时对外发送广播&#xff0c;广播将会激发前台Activity的BroadcastReceiver&#xff0c;它自身也用BroadcastReceiver监听来自前台Activity所发出的广播pack…

使用ActionFilterAttribute 记录 WebApi Action 请求和返回结果记录

在asp.net mvc 中 webapi 和 mvc 处理消息是两个不同的管道&#xff0c;Asp.net mvc 和 webapi 为我们提供的 ActionFilterAttribute 拦截器&#xff0c;通过 重写 OnActionExecutingAsync&#xff0c;来 拦截action的请求消息&#xff0c;当执行OnActionExecutingAsync完成以后…

Nodejs学习——get方式、post方式请求数据

本篇不涉及Nodejs的框架&#xff0c;仅仅从http模块的角度&#xff0c;来实现一个简单的get和post的请求&#xff1a; GET方式 var http require(http); var url require(url); var util require(util);var server http.createServer((req,res)>{res.writeHead(200,{C…