BroadcastReceive学习例程

BroadcastReceive是Android四大核心组件之一,本质上是一种全局的监听器,用于监听系统全局的广播消息。

它用于接收程序所发出的Broadcast Intent,程序启动它只需两步:

(1)创建需要启动的ReceivecastReceiver的Intent

(2)调用Context的sendBroadcast()或sendOrderedBroastcast()方法来启动指定的BroadcastReceiver

当应用程序发出一个Broadcast Intent之后,所有匹配该Intent的BroadcastReceive都可能被启动

例程:

TestActivity.java  主页面Activity

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity {

	private Button sendButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sendButton = (Button)findViewById(R.id.sendButton);
		sendButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent();
				intent.setAction(Intent.ACTION_EDIT);
				TestActivity.this.sendBroadcast(intent);

			}
		});

	}
}

TestReceiver.java   重写BroadcastReceiver的onReceive方法

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

public class TestReceiver extends BroadcastReceiver {

	public TestReceiver(){
		System.out.println("TestReceive");
	}
	@Override
	public void onReceive(Context context, Intent intent) {
		System.out.println("onReceive");

	}

}

AndriodManifest.xml  配置指定BroadcastReceiver能匹配的Intent

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="mars.testbc"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="mars.testbc.TestActivity"
            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 = ".TestReceiver">
            <intent-filter >
                <action android:name="android.intent.action.EDIT"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

结果:点击主页面的Button(两次)

onReceive()方法执行完后,BroadcastReceive的实例就会被销毁。

时间: 2024-10-21 00:12:19

BroadcastReceive学习例程的相关文章

ContentProvider学习例程

ContentProvider总是需要与ContentResolver结合使用,它们之间的关系是: Context提供了getContentResolver()方法,这个表示Activity.Service等组件都可通过getContentResolver()方法获取ContentResolver对象. 获取了ContentResolver对象之后,接下来就可以调用ContentResolver的query().insert().update()和delete()方法 --实际上指定Uri对应的

tensorflow实现迁移学习

此例程出自<TensorFlow实战Google深度学习框架>6.5.2小节 卷积神经网络迁移学习. 数据集来自http://download.tensorflow.org/example_images/flower_photos.tgz ,及谷歌提供的Inception-v3模型https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip . 自行下载和解压. 解压后的文件夹包含5个子

[读书笔记]了不起的node.js(三)

这周的nodejs学习内容为几个依赖包的使用,把书上的例子都敲了一遍.这篇就以例程为线索,复习一下一周的工作. 1.connect 这个例程主要是使用connect依赖包,connect提供一个中间件(由函数组成,与请求.响应对象交互)的功能.书中也介绍了connect内置其他的中间件,这些中间件起到组织代码完成web功能的作用. 2.session 使用connect进行用户会话,进行基本的登录系统.通过中间件实现了检查登录.展示表单.用户匹配.处理登出的功能.展示了中间件的强大和组织方式.

漂亮的树形菜单,可折叠,有动画

<div class="lmenu"> <ul> <li aid="26"> <span> <em class="icoopen"></em> 易语言专题学习 </span> <ul style="display: none;"> <li aid="27"> <em class="ic

美丽的树形菜单,可折叠,有动画

<div class="lmenu"> <ul> <li aid="26"> <span> <em class="icoopen"></em> 易语言专题学习 </span> <ul style="display: none;"> <li aid="27"> <em class="ic

k-means算法MATLAB和opencv代码

上一篇博客写了k-means聚类算法和改进的k-means算法,这篇博客就贴出对应的MATLAB和C++代码. 以下是MATLAB代码,实现用k-means进行分割: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 功能:实现如何利用Kmeans聚类实现图像的分割: 时间:2015-07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function kmeans_segmentation() clear;c

Service-黑名单来电自动挂断

这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果需要挂断电话,必须使用AIDL与电话管理Service进行通信,并调用服务中的API实现结束通话 为了调用远程的AIDL Service,需要上图所示的两个aidl文件 BlockMain.java  界面提供一个按钮让用户打开对话框来勾选黑名单. public class BlockMain ex

第五篇:本人多年来积累的单片机程序 资料下载(绝对干货,内附下载链接)

首先打个广告:如果需要做毕设以及嵌入式项目合作,欢迎进入我们工作室:创想嵌入式设计工作室 本人搜集的大量单片机源码资料及毕业设计资料,足有1200+套,很多实用的demo源码和毕业设计参考方案,可用于做项目时借鉴,博尾附有下载链接.(内附本人联系方式,可一起交流探讨,交朋友) 为了方便 查找,我已将项目源码的目录整理出来了,方便 采用"ctrl +F"快速查找验证是否有需要的demo.可以一键打包下载,也可只下载需要的demo. 下载链接内附本人联系方式,如果在安装过程中遇到问题,可以

OS X下UNIX环境高级编程(第三版)学习日志-第一章ChapterI,编译apue包与第一个例程

1.从网络上获取代码,地址如下apue最新官方下载地址 2.解压到本地 由于最新版本是第三版(3rd Edition),apue.3e,就是我们要的源代码 3.编译源代码 编译过程中笔者并未遇到任何问题,所以建议大家也下载最新版本的代码来学习,贴一下笔者的环境信息 Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple