- 浏览: 272250 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tonytony3:
THANK YOU
Android多级树形菜单的实现 -
haiyang08101:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
求求你帮帮我:
怎么把我的空格也当成节点处理了?
java对xml文件做增删改查 -
求求你帮帮我:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
lpj13579:
多谢分享,学习学习
高仿小米盒子UI效果实现
最近看了下关于广播方面的东西,加深了理解,也纠正了自己以前的不正确的看法。
关于广播有2中注册方式,一种是在代码中注册,也叫动态注册,另一种是在AndroidManifest里面注册,也叫静态注册。
不管在哪个里面注册,都需要发送广播sendBroadcast()。广播发送的是一个Intent,intent里面一般是action。
如果是在代码里面注册,一般在onResume()方法里面注册。
@Override protected void onResume() { // TODO Auto-generated method stub myReceiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("com.android.shang"); //注册广播 registerReceiver(myReceiver, filter); Intent intent = new Intent(); intent.setAction("com.android.xiang"); //发送广播 sendBroadcast(intent); super.onResume(); }
在onPause()方法里面要取消注册。
@Override protected void onPause() { // TODO Auto-generated method stub unregisterReceiver(myReceiver); super.onPause(); }
当然,也可以在xml文件中注册:
<receiver android:name=".MyBrocastReceiverTest"> <intent-filter> <action android:name="com.android.xiang"></action> </intent-filter> </receiver>
如果发送的广播的action已经注册了,那么在onReceive()方法中就会接收到发过来的广播,继而做出一些处理。
你可以写出一个内部类:
class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //从这里的log中可以看到是否接受到了广播 System.out.println("intent = " + intent); } }
当然也可以单独写一个类:
package com.android.TestBrocastReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyBrocastReceiverTest extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("intent = " + intent); } }
一般如果在代码里面注册,就把广播写在代码里面,在xml文件中注册就单独写一个类。
注册在代码里面:
package com.android.TestBrocastReceiver; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; public class TestBrocastReceiver extends Activity { MyReceiver myReceiver; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onPause() { // TODO Auto-generated method stub unregisterReceiver(myReceiver); super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub myReceiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("com.android.shang"); //注册广播 registerReceiver(myReceiver, filter); Intent intent = new Intent(); intent.setAction("com.android.xiang"); //发送广播 sendBroadcast(intent); super.onResume(); } class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //从这里的log中可以看到是否接受到了广播 System.out.println("intent = " + intent); } } }
注册在xml文件中:
在xml文件中注册,写上一个广播类,然后在activity中发送广播就可以了。
有时系统会发出一些广播,比如说时间的变化等,时间走一秒就会发一个广播,这时我们可以监听这个广播,然后在接收器中做处理就可以了,而不需要在发广播了。
评论
1 楼
warnerhit
2011-12-22
filter.addAction("com.android.shang");
intent.setAction("com.android.xiang");
很重要的两句没解释
intent.setAction("com.android.xiang");
很重要的两句没解释
发表评论
-
Android 三大图片加载框架比较
2016-11-30 10:31 10861.哪三大图片加载框架? 1) Pi ... -
仿微信小视屏拍摄的进度条/自定义的progressBar的样式。
2016-08-20 00:25 1024今天有个需求,就是需要倒计时的进度条,样式参考微信小视屏拍摄 ... -
android 闹钟定时任务 AlarmManager
2016-06-02 13:41 1826直接上代码 package com.exampl ... -
android应用实现重启系统
2016-06-02 13:33 35231.在AndroidManifest.xml文件的manif ... -
android 每天定时提醒功能实现
2016-06-01 22:42 0android要实现定时的功 ... -
Java Calendar 类的时间操作
2016-06-01 21:02 668ava Calendar 类时间操作,这也许是创建日历和管理 ... -
android中fragment和activity之间相互通信
2014-11-13 16:25 1440在用到fragment的时候,老是会遇到一个问题,就是fra ... -
墨迹天气上下滑动viewpager
2014-11-04 17:15 755墨迹天气上下滑动viewpager -
Android杂谈--打开文件的Intent及使用
2014-10-25 13:03 646在写文件管理系统时会用到各种打开不同格式的文件的需求,由于A ... -
获取Android签名证书的sha1值
2014-08-23 23:14 663前言:今天开始研 ... -
java中Keytool的使用总结
2014-08-23 22:40 561J2SDK提供了keytool命令行工具,可以根据指定的参数 ... -
android获取versionName和versionCode
2014-07-08 18:02 738<TextView android:textSize= ... -
Android如何防止apk程序被反编译
2014-07-08 17:22 707作为Android应用开发者,不得不面对一个尴尬的局面,就是 ... -
在GridView中实现单选或多选功能
2014-06-26 13:08 837由于项目需要,要用到GridView实现多选功能,在网上搜 ... -
Android中Tween动画和Frame动画实例
2014-06-26 10:46 726Animation主要有两种动画模式:Tween动画和Fra ... -
android 禁用和开启四大组件的方法(setComponentEnabledSetting )
2014-06-19 15:26 0为什么要关闭组件? 在用到组件时,有时候我们可能暂时性的不使 ... -
android MD5校验码的生成与算法实现
2014-06-17 10:58 885在Java中,java.security.Mes ... -
android 自动检测版本升级
2014-06-15 14:10 385这里我用别的app代替了,简单省事,正常的话,你要对你的 ... -
layout左右平滑控制.
2014-04-30 09:41 615<?xml version="1.0&quo ... -
android让你的TabHost滑动起来
2014-04-22 22:13 819在Android应用中,一般TabActivity和若干个T ...
相关推荐
该文章清晰的说明了BroadCastReceiver的用法及其方法如何发送以及接收广播
在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收广播。以下是对BroadcastReceiver的详细说明: 一、BroadcastReceiver概述 ...
BroadcastReceiver的主要生命周期包括`onReceive()`方法,当BroadcastReceiver接收到广播时,系统会调用这个方法。开发者需要在这个方法中实现对广播的处理逻辑,注意此方法执行时间应尽可能短,因为过长的执行可能...
本测试代码着重展示了BroadcastReceiver的工作原理和使用方法。 在`Lesson_22_code.zip`和`Lesson_21_code.zip`这两个压缩包中,可能包含以下关键知识点: 1. **BroadcastReceiver注册**: - 静态注册:在...
- **无序广播**:使用`sendBroadcast()`方法发送,特点是广播消息会被所有符合条件的接收者接收,但接收顺序不确定,且无法被拦截。 - **有序广播**:使用`sendOrderedBroadcast()`方法发送,可以设定接收顺序并...
为了优化性能和用户体验,应合理使用`BroadcastReceiver`,避免在不必要的时候持续监听广播,因为这会消耗电池和系统资源。同时,针对Android系统版本的变化,如Android Oreo及以上版本对后台服务和广播的限制,可能...
综上所述,BroadcastReceiver在Android开发中扮演着重要角色,它的生命周期管理和正确使用是确保应用能及时、有效地响应广播的关键。同时,理解源码可以帮助我们更好地定制和优化BroadcastReceiver的行为。
总结来说,"BroadcastReceiverDemo"是一个关于如何利用BroadcastReceiver监听电池电量变化的实例,通过接口实现BroadcastReceiver与应用程序其他部分的数据交换,展示了Android系统事件监听的基本用法。这个示例对于...
在这个"BroadcastReceiver学习(01)"中,我们将深入探讨BroadcastReceiver的基本概念、注册方式以及如何创建和使用。 ### 一、BroadcastReceiver基本概念 BroadcastReceiver是一种服务组件,它能够接收并响应系统...
3. `onReceive()` 方法结束后,`BroadcastReceiver` 对象会被释放,除非你创建了长时间运行的任务,如启动 `Service` 或使用 `Handler` 延迟操作。记住,不要在 `onReceive()` 中执行耗时操作,否则可能导致 ANR...
总之,BroadcastReceiver是Android开发中的关键组件,通过合理使用不同类型的注册、广播类型,可以实现应用间的通信、监听系统事件等多种功能。在实际开发中,开发者应根据需求选择合适的注册方式和广播类型,以提高...
本教程将深入讲解Android BroadcastReceiver的基础知识,以及如何在实际应用中使用。 一、BroadcastReceiver基本概念 BroadcastReceiver允许应用程序接收并处理系统或自定义广播事件。系统广播是由Android系统发出...
BroadcastReceiver在Android系统中充当一个监听器,当接收到匹配的Intent广播时,会调用其定义的onReceive()方法。BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件...
1. **BroadcastReceiver的生命周期**:BroadcastReceiver的生命周期非常短暂,主要包含`onReceive()`方法。当接收到广播时,系统会创建BroadcastReceiver实例并调用该方法。因此,所有的处理逻辑都应该在这个方法中...
本示例将详细介绍如何创建和使用一个简单的BroadcastReceiver。 首先,我们需要创建BroadcastReceiver的子类。在Android Studio中,新建一个Java类,如`MyBroadcastReceiver`,并继承自BroadcastReceiver: ```...
### BroadcastReceiver详细介绍 #### 一、概述 在Android开发中,`BroadcastReceiver`是四大组件之一,主要用于接收并处理系统或应用程序发出的广播...掌握其基本原理和使用方法,有助于提升应用的功能性和用户体验。
这个接口定义了当BroadcastReceiver接收到特定广播时需要调用的方法,例如`onBroadcastReceived()`。BroadcastReceiver在接收到广播后,会调用这个接口的方法,而不是直接修改UI。Activity实现这个接口,并在适当的...
这个"android demo,BroadcastReceiver源代码的实现"是一个示例,旨在帮助开发者理解如何在实际应用中使用BroadcastReceiver。 BroadcastReceiver的工作原理是基于Android的事件驱动模型。当系统或应用发送一个广播...