`

Android学习之Android广播机制

 
阅读更多

一提起广播,我们首先想到的是收音机,当我们想要收听某个广播台时只需要将收音机的频率调至广播台所在的频率即可!而Android中的广播其实和收音机非常相似,不过它没有所谓的频率,它是由系统广播一个事件,然后由其他满足某一条件的程序接收并处理这个事件!!

  要在Android中实现广播,首先我们要在Manifest.xml文件中配置一个<receiver/>标签,这个标签必须有一个android:name属性,值为继承自BroadcastReceiver类的接收器类!这个标签还有一个子标签为<intent-filter/>,这个标签很重要,是指定接收器需要接收哪种广播。另外,还有配置一个用户权限:<uses-permission/>,具体的值可以参考官方API文档。

另外一个比较重要的步骤是必须有一个类继承自BroadcastReceiver类,并复写onReceiver方法,在该方法中处理接收到广播后需要处理的事情!

下面来看一个具体的例子,有助于更好的理解广播机制是怎么一回事。

UI部分就不说了,Activity上就加了一个按钮,点击后发送广播。接收器接收到广播后在终端输出一句话。

首先看AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.gufengxiachen.broadcast"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".BroadCast"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
		
		<receiver android:name=".MyBroadCastReceiver">
			<intent-filter>
				<action android:name="android.intent.action.EDIT"></action>
			</intent-filter>
			
		</receiver>
    </application>
   
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

 下面是Activity:

package com.gufengxiachen.broadcast;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class BroadCast extends Activity {
    /** Called when the activity is first created. */
	
	private Button sendBroadCast =null;	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        sendBroadCast = (Button)findViewById(R.id.sendBroadCast);
       
        sendBroadCast.setOnClickListener(new SendBroadCast());
    }
    class SendBroadCast implements OnClickListener{
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		
    		Intent intent = new Intent(Intent.ACTION_EDIT);
    		BroadCast.this.sendBroadcast(intent);
    	}
    }
      
}

 最后是接收器类:

 

package com.gufengxiachen.broadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyBroadCastReceiver extends BroadcastReceiver{
	public MyBroadCastReceiver(){
		
	}
	@Override
	public void onReceive(Context context, Intent intent) {
		
		System.out.println("message receiver");
	}

}
 
分享到:
评论
1 楼 bawanglb 2011-09-30  
,这个讲的通俗易懂,支持

相关推荐

    车库和车库 CFD 模型 CFD 分析可用于分析模型

    车库和车库 CFD 模型 CFD 分析可用于分析模型。

    henn-produktfolder-thermalmanagement-2024.pdf

    henn-produktfolder-thermalmanagement-2024

    39 Android源代码定时情景模式切换.zip

    39 Android源代码定时情景模式切换.zip

    基于单 神经 元PID控制器的四旋 翼 飞 行 器 航 迹控制.pdf

    基于单 神经 元PID控制器的四旋 翼 飞 行 器 航 迹控制.pdf

    西门子S7 200 Smart PLC与3台台达MS300变频器通讯程序

    内容概要:本文详细介绍了如何使用西门子S7-200 SMART PLC与三台台达MS300变频器进行Modbus RTU通讯的具体步骤和技术要点。首先,文章强调了正确的硬件连接方法,包括PLC与变频器之间的485总线连接以及终端电阻的设置。接着,深入讲解了变频器的关键参数配置,确保通讯稳定可靠。然后,展示了核心程序的设计思路,特别是轮询机制的应用,通过定时中断实现对三台变频器的状态监测和控制。此外,还提供了触摸屏的配置方法,使操作更加直观便捷。最后,分享了一些常见的调试经验和避坑指南,帮助解决实际应用中可能遇到的问题。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC与变频器通讯感兴趣的读者。 使用场景及目标:适用于需要将多台变频器集成到PLC控制系统中的工程项目,旨在提高系统的稳定性和可靠性,同时降低维护成本。 其他说明:文中提供的代码片段和配置建议均基于作者的实际经验,具有较高的实用价值。对于初学者来说,建议先理解基本概念再逐步深入实践。

    7天打造Rust命令行工具:Clap与StructOpt深度对比.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    互联网大厂裁员背后的经济规律与增长天花板.mp4

    互联网大厂裁员背后的经济规律与增长天花板.mp4

    2025年交换原理与技术.zip

    2025年交换原理与技术.zip

    基于PLC的智能农业温室大棚控制系统中电气控制设计与图纸详解 其中包括梯形图程序、接线图及io分配等内容,带您领略组态画面的精彩展示。

    内容概要:本文详细介绍了基于PLC(可编程逻辑控制器)的智能农业温室大棚控制系统的各个方面。主要内容涵盖IO分配、梯形图程序编写、接线图绘制和组态画面设计。通过合理的IO分配,PLC能够准确获取环境数据并控制相关设备;梯形图程序实现了对温度、湿度等环境因素的自动化控制;接线图确保了硬件连接的准确性;组态画面提供了用户友好的操作界面。此外,还分享了一些实际应用场景和技术细节,如温度控制梯形图实战、接线冷知识、组态画面设计技巧以及调试现场的经验。 适合人群:从事农业自动化、工业控制领域的工程师和技术人员,特别是对PLC编程和智能农业感兴趣的读者。 使用场景及目标:适用于希望提高农业生产效率和智能化水平的农场主和农业企业。通过引入PLC控制系统,可以实现对温室环境的精准控制,减少人工干预,提升作物产量和质量。 其他说明:文中不仅提供了理论知识,还包括了许多实践经验,帮助读者更好地理解和应用PLC技术于智能农业中。

    基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档(毕业设计&课程设计&项目开发)

    基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档

    三菱MCGS组态皮带运输机控制系统:传送带四皮带及梯形图原理详解

    内容概要:本文详细介绍了基于三菱FX3U PLC和MCGS组态软件构建的四皮带运输机控制系统。首先阐述了系统的IO分配规则,强调了关键输入输出信号的选择依据及其重要性。接着深入解析了梯形图编程技巧,展示了如何通过定时器、比较器等指令实现皮带的顺序启动和速度同步控制。随后探讨了MCGS组态界面的设计,包括动态皮带模拟、报警提示以及历史数据记录等功能。最后分享了一些常见故障处理经验和系统优化方法,如合理的接线方式、滤波处理和联锁逻辑设计。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于需要设计和维护复杂皮带传输系统的工厂环境,旨在提高生产效率并确保设备安全可靠运行。 其他说明:文中提供了大量实际案例和调试经验,有助于读者更好地理解和掌握相关技术和最佳实践。

    面板数据-中国各银行流动性创造(2012-2023年).xlsx

    详细介绍及样例数据:https://blog.csdn.net/T0620514/article/details/147722861

    Go语言设计模式:单例与工厂模式的并发安全实现.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!

    基于NB-IoT的智能渔业养殖综合控制系统设计.pdf

    基于NB-IoT的智能渔业养殖综合控制系统设计.pdf

    基于MCGS与PLC技术的饮料灌装生产流水线智能控制解决方案:梯形图程序、接线图与组态画面全解析

    内容概要:本文详细介绍了利用MCGS通用监控系统和西门子S7-300 PLC实现饮料灌装生产流水线的自动化控制方法。首先阐述了IO分配的具体规则,明确各输入输出端口的功能及其所连接的外部设备;接着展示了梯形图程序的设计思路,解释了启动停止控制、传送带控制和灌装控制三个关键环节的工作流程;然后描述了接线图原理图的内容,说明了PLC与外部设备间的物理连接方式;最后讲解了MCGS组态画面的应用,强调了其在人机交互方面的作用。通过这些内容,全面揭示了如何构建一套稳定高效的饮料灌装生产系统。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程及MCGS组态有一定了解的专业人士。 使用场景及目标:适用于需要优化现有饮料灌装生产线的企业,旨在提高生产效率、降低人工成本的同时保证产品质量的一致性和稳定性。通过对文中介绍的技术手段的学习和应用,可以更好地理解和掌握现代工业自动化控制系统的构建方法。 其他说明:文中不仅提供了理论性的指导,还有具体的实例分析,如针对可能出现的问题提出解决方案,使得读者能够在实践中灵活运用所学知识。此外,还提到了一些调试经验和技巧,有助于解决实际工作中遇到的各种挑战。

    Go语言GUI开发:Fyne框架跨平台应用实战.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!

    基于Unet神经网络架构的皮肤病图像分割系统,利用PyTorch实现的高效自动化诊断工具

    内容概要:本文详细介绍了使用PyTorch实现UNet架构进行皮肤病分割的方法和技术要点。首先讨论了数据准备,包括图像尺寸统一、数据增强以及归一化处理。接着深入探讨了UNet模型的具体实现,包括双卷积块、跳跃连接、上采样和下采样的设计。文中还特别强调了损失函数的选择,推荐使用Dice Loss来应对小目标分割问题,并提出了混合损失函数以提高模型稳定性。此外,文章还涉及了训练过程中的一些注意事项,如内存优化、类别不平衡处理以及后处理方法,如形态学开运算和阈值处理。最终,该系统在ISIC2018数据集上达到了约89%的Dice系数。 适合人群:具备一定深度学习基础的研究人员和开发者,尤其是对医学影像处理感兴趣的从业者。 使用场景及目标:适用于需要精确分割皮肤病灶的应用场景,如辅助诊断工具的开发。主要目标是提高皮肤病灶分割的准确性,减少人工标注的工作量并提升诊断效率。 其他说明:文章提供了详细的代码片段和实践经验分享,帮助读者更好地理解和应用UNet模型。同时,作者指出实际部署时需要注意模型对毛发等干扰因素的敏感性,并提出了一些改进措施。

    实验室智能监控系统的实现.pdf

    实验室智能监控系统的实现.pdf

    Go语言字节操作:binary包高效编解码指南.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!

    永磁同步电机模型预测控制:包含SVPWM双环PI控制、无差拍预测及多矢量策略,附详细参考文献与说明

    内容概要:本文详细探讨了永磁同步电机(PMSM)的模型预测控制(MPC),涵盖了几种典型的控制方法和技术细节。首先介绍了双环PI控制与空间矢量脉宽调制(SVPWM)的经典组合,讨论了其优点和局限性,并提供了相关代码片段。随后,重点讲解了无差拍预测控制的实现方式,强调了离散化处理的重要性以及其实现过程中需要注意的问题。接着,文章深入分析了矢量选择的方法,包括单矢量、双矢量和三矢量的选择策略及其各自的优缺点。此外,还提到了一些实际测试中遇到的问题,如延迟补偿、参数敏感性和过调制处理等,并分享了一些实用的经验和解决方案。最后,列举了若干重要的参考文献供进一步研究。 适合人群:从事电机控制系统设计的研发工程师、高校师生及相关领域的研究人员。 使用场景及目标:帮助读者理解并掌握PMSM的MPC技术,能够应用于实际工程项目中,提高电机控制系统的性能和稳定性。 其他说明:文中提供的代码片段可以直接用于实验验证,有助于加深对理论的理解。同时,针对不同的应用场景提出了具体的优化建议,便于读者根据实际情况选择合适的控制方案。

Global site tag (gtag.js) - Google Analytics