`
liushilang
  • 浏览: 89327 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android中BroadCastReceiver使用(整理)

 
阅读更多

BroadcastReceiver

  在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。

下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过滤接收的过程:

  首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。

  当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要实现onReceive()方法。

  注册BroadcastReceiver有两种方式:

  静态注册:在AndroidManifest.xml中用标签生命注册,并在标签内用标签设置过滤器。

  <receiver android:name="myRecevice">    //继承BroadcastReceiver,重写onReceiver方法

    <intent-filter>    

      <action android:name="com.dragon.net"></action> //使用过滤器,接收指定action广播

      </intent-filter>

  </receiver> 

  动态注册:

  IntentFilter intentFilter = new IntentFilter();

  intentFilter.addAction(String);   //为BroadcastReceiver指定action,使之用于接收同action的广播

      registerReceiver(BroadcastReceiver,intentFilter);

  一般:在onStart中注册,onStop中取消unregisterReceiver

  指定广播目标Action:Intent intent = new Intent(actionString);

  并且可通过Intent携带消息 :intent.putExtra("msg", "hi,我通过广播发送消息了");

  发送广播消息:Context.sendBroadcast(intent )

 

其中在动态注册中可将BroadcastReceiver的继承类进行封装,添加构造函数和BroadcastReceiver注册

 

复制代码
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

publicclass BroadcastReceiverHelper extends BroadcastReceiver {

NotificationManager mn
=null;
Notification notification
=null;
Context ct
=null;
BroadcastReceiverHelper receiver;

public BroadcastReceiverHelper(Context c){
ct
=c;
receiver
=this;
}

//注册
publicvoid registerAction(String action){
IntentFilter filter
=new IntentFilter();
filter.addAction(action);
ct.registerReceiver(receiver, filter);
}

@Override
publicvoid onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg=intent.getStringExtra("msg");
int id=intent.getIntExtra("who", 0);
if(intent.getAction().equals("com.cbin.sendMsg")){
mn
=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notification
=new Notification(R.drawable.icon, id+"发送广播", System.currentTimeMillis());
Intent it
=new Intent(context,Main.class);
PendingIntent contentIntent
=PendingIntent.getActivity(context,
0, it, 0);
notification.setLatestEventInfo(context,
"msg", msg, contentIntent);
mn.notify(
0, notification);
}
}
}
复制代码

 

然后再Activity中声明BroadcastReceiver的扩展对象,在onStart中注册,onStop中卸载

 

复制代码

BroadcastReceiverHelper rhelper;
@Override
publicvoid onStart(){
//注册广播接收器
rhelper=new BroadcastReceiverHelper(this);
rhelper.registerAction(
"com.cbin.sendMsg");
super.onStart();
}

@Override
publicvoid onStop(){
//取消广播接收器
unregisterReceiver(rhelper);
super.onStop();
}
复制代码

 

分享到:
评论

相关推荐

    Android BroadcastReceiver常见监听整理

    通过对这些常见监听的整理,开发者可以更加高效地在Android应用中使用BroadcastReceiver来响应系统级别的事件。这不仅提高了应用的响应能力,还可以增加应用的用户体验。需要注意的是,从Android O(API级别26)开始...

    android基础知识整理版

    首先,Android系统中的四大组件是Activity、Service、BroadcastReceiver和ContentProvider。它们各自扮演着不同的角色,共同构成了Android应用的基础架构。 1. Activity:Activity是用户与应用交互的窗口,代表一个...

    Android技术面试资料整理

    - **异常捕获**:在关键代码段中使用try-catch语句捕获异常。 - **日志记录**:记录异常发生时的信息,以便后续分析。 - **崩溃报告**:收集崩溃报告,及时修复程序缺陷。 #### 18. Android系统架构 - **应用程序...

    Android的小知识整理

    2. **Intent使用**:Intent是Android系统中对象间通信的主要方式。了解如何创建、传递数据以及使用隐式和显式Intent,能够更好地实现组件间的交互。 3. **布局优化**:避免使用嵌套布局,尽可能使用LinearLayout、...

    Android开发基础教程整理版

    Intent是Android系统中用于连接各个组件的桥梁,可以用来启动Activity、Service或者BroadcastReceiver。 4. **布局设计**:Android使用XML来定义界面布局,包括线性布局(LinearLayout)、相对布局(RelativeLayout...

    Android技术面试整理附有详细答案

    ### Android技术面试整理知识点 #### 1. Android的四大组件及其作用 - **Activity**:作为用户界面的主要组成部分,Activity负责展示UI并处理用户输入。每个Activity代表一个屏幕,可以包含多个视图(View),用于...

    Android开发经验整理

    本文将基于“Android开发经验整理”这一主题,详细解析其中包含的关键知识点,旨在帮助新手开发者快速上手,避免常见错误,提升开发效率。 1. **环境配置**:Android开发首先需要安装Android Studio,这是Google...

    android中文帮助文档

    【Android中文帮助文档】是为Android开发者和使用者提供的一份详尽且实用的参考资料,它旨在解决在使用Android系统或开发Android应用时遇到的各种问题。这份文档可能包含了API指南、开发者教程、最佳实践以及常见...

    张泽华Android面试题整理

    1. **Android基础知识**:包括Android应用的基本架构(Activity, Service, BroadcastReceiver, ContentProvider),Android组件间的通信机制,以及AndroidManifest.xml文件的作用。 2. **UI设计与布局**:涉及...

    android面试题整理

    - **RxJava**:响应式编程的概念和如何在Android中使用它。 - **Dagger2或Hilt**:依赖注入框架,提升代码可测试性和可维护性。 5. **算法与数据结构**: - **排序算法**:冒泡、插入、选择、快速、归并等排序...

    Android最新面试题整理,有道云笔记格式

    这份"Android最新面试题整理,有道云笔记格式"的资料很可能包含了当前Android开发者在面试过程中可能会遇到的关键问题。以下是一些可能涵盖的知识点,以及它们的重要性: 1. **基础知识**:面试通常会从基础开始,...

    study.rar Android2020最新面试整理

    "study.rar Android2020最新面试整理"这个压缩包包含的资源显然是一份精心整理的Android面试指南,旨在帮助求职者准备面对2020年及以后的Android面试挑战。这份资料可能包括了最新的技术趋势、必备的编程知识以及...

    Android 入门资料收集整理, 打包供下载

    1. **Hello, Android 2nd Edition.pdf**:这是一本经典的Android入门书籍,通常会涵盖Android应用的基本结构、环境搭建、用户界面(UI)设计、Activity与Intent、SQLite数据库操作、通知、服务、BroadcastReceiver等...

    Android小知识整理

    Android应用程序中的四大组件(Activity、Service、BroadcastReceiver和ContentProvider)都有各自的生命周期。理解每个组件的生命周期方法如onCreate(), onStart(), onResume(), onPause(), onStop()和onDestroy()...

    android手把手教你开发launcher(AndroidStudio版)

    在上述教程中,使用的最小SDK版本为7,这意味着应用至少支持Android 2.1(API level 7)及以上版本。然而,随着Android系统的不断更新和升级,开发者应该注意新版本Android带来的新特性和API变化,适时地更新和适配...

    Android面试题整理

    以下是一些基于"Android面试题整理"的详细知识点解析: 1. **Android基础知识** - **Activity生命周期**:理解并能熟练绘制各个状态,包括onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()等...

Global site tag (gtag.js) - Google Analytics