Android广播机制的基本使用

一提到广播我们第一感觉就会联想到小时候村里面的广播,安卓的广播机制也是类似于大喇叭。有发送广播的地方,也有接收广播的地方。但是具体怎么操作呢,我们来一步一步的看下去~

安卓的广播种类

  • 系统发送的广播:具体有哪些可以看下这篇Blog

    http://blog.sina.com.cn/s/blog_7dbac1250101mt5h.html

  • app发送的广播:这个是我们自定义的,需要在AndroidMainFest.xml文件中出册,在发送广播的时候也要用到

如何发送广播

  • 使用意图Intent发送

1.创建好Intent发送对象,构造方法如下

java //参数是需要发送的信息,一般是字符串 public static final String ACTION_INTENT_TEST = "com.tao.broadCastReceive";    Intent intent = new Intent(ACTION_INTENT_TEST);  

2.使用Activity中的一个方法进行发送广播

  • 同步广播

    同步广播可以几乎再一瞬间到达所有的广播接收站,程序对此无法控制,不能停止,不能阶段

//此方法是Context中的方法,同步广播
sendBroadcast(intent);  
  • 有序广播

    广播接收者需要提前设置优先级,优先级高的先接收到广播,优先级数值为-1000~1000,在AndroidManifest.xml的

  • 添加一些数据给下一个接收者(intent.putExtra())
  • 终止广播(abortBroadcast());
sendOrderedBroadcast(intent,null);  

广播的接收

  1. 构建一个类,此类继承BroadcastReceiver,并实现onReceive方法,但是记住,onReceive的代码不宜过长。不适合执行长时间操作的代码,如I/O,网络请求,文件读取的等,否则会出现吧ANR(Application No Response),应当创建并启动一个Services并启动,再服务中执行操作(记住服务是工作在UI线程中的哦!!!)
public class Receiver extends BroadcastReceiver{  
    public void onReceive(Context context, Intent intent) {  
        Bundle bundle = intent.getExtras();  
        ...  
    }  
} 
  1. 再AndroidMainFest.xml文件中注册广播
    <receiver android:name=".Receiver">   
        <intent-filter android:priority="1000">   
            <action android:name="com.tao.broadCastReceive"/>  
        </intent-filter>  
    </receiver> 

这样就完成一个广播的发送了,当然如果需要接收系统的广播,则可以在AndroidMainFest文件中进行设置Action属性,则就可以接收系统发出的广播信息。

实例代码

  • MainActivity.java
public class MainActivity extends AppCompatActivity {
    private Button sendBroadCastReceive;
    private EditText titleContent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sendBroadCastReceive= (Button) findViewById(R.id.sendBroadCastReceive);
        titleContent= (EditText) findViewById(R.id.titleContent);
        sendBroadCastReceive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent sendBroadCast=new Intent();
                sendBroadCast.setAction("coom.tao.selfBroadCastReceive");
                sendBroadCast.putExtra("title",titleContent.getText().toString().trim());
                sendBroadcast(sendBroadCast);
            }
        });
    }
}
  • activity_main.xml 布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.tao.boedercast.MainActivity">
    <EditText
        android:id="@+id/titleContent"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginBottom="10dp"
        android:layout_above="@+id/sendBroadCastReceive"
        android:hint="请输入发送的内容"
        />
    <Button
        android:id="@+id/sendBroadCastReceive"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="发送广播"
        />
</RelativeLayout>

预览

  • 自定义接收BroadcastReceive
public class MyBroadCastReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String titleContent=intent.getStringExtra("title");
        Toast.makeText(context,titleContent,Toast.LENGTH_LONG).show();
    }
}
  • androidmainfest.xml文件注册
   <receiver android:name=".MyBroadCastReceive">
      <intent-filter android:priority="1000">
          <action android:name="coom.tao.selfBroadCastReceive"></action>
       </intent-filter>
   </receiver>

一个简单的自定义广播完成了,欢迎大家指正批评,谢谢!

本博客内容一致同步到本人的简书博客:http://www.jianshu.com/p/c01397361ba0 欢迎访问留言交流

原文地址:https://www.cnblogs.com/zhoutao825638/p/10381996.html

时间: 2024-10-24 22:58:41

Android广播机制的基本使用的相关文章

Android广播机制(转)

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android总结篇系列:Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制分析

1.1. 广播简介 Android 广播与生活中的广播概念不同,它是指系统中产生事件后的通知.Android 广播不关心接收者是否收到处理或者如何处理广播,可以说是一种单向的通知.        Android 通过 BraodcastReceiver 来监听系统发出的广播,不同的 BraodcastReceiver 通过设置不同的 fliter 来区分监听广播的类型.有些广播的监听需要相应的权限. 1.2. 注册广播 BraodcastReceiver 必须经过注册才能具有监听功能,注册的方式

Android广播机制的深入学习

部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组

Android广播机制概述

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android随笔之——Android广播机制Broadcast详解

在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理.另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收. 一.Android广播机制三要素: 1.广播(Broadcast):用于发送广播.是一种广泛应用的在应用间传输信息的机制 2.广播接收器(Broadcast

Android(java)学习笔记172:Android广播机制

Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广播后判断哪种广播需要哪种事件,然后向不同需要事件的应用程序注册事件. 不同的广播可能处理不同的事件,也可能处理相同的广播事件,这时候就需要Android系统的筛选.例如在一个经典的电话黑名单应用程序中,首相通过将黑名单号码保存在数据库里面,当来电的时候,我们接收的来电广播并将黑名单号码与数据库中某个数据做匹配

一篇博客彻底了解Android广播机制

首发于http://blog.csdn.net/pwiling/article/details/47682413,禁止转载 之前数次在程序中碰到Android广播,总是有这个疑问:往往是在发送广播的activity里面进行动态注册,动态注册必须要获得BroadcastReceiver对象,既然我们已经获得了广播接受器的对象,为何还要发送广播,直接用广播接收器的对象调用里面的相关逻辑处理的方法,不行吗?为什么还要绕这么一大圈用广播呢? 以前都是走马观花,这次弄清楚了.在解答这个问题之前,我们首先来

Android广播机制:Broadcast

转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: