美文网首页
安卓四大组件之广播机制

安卓四大组件之广播机制

作者: 九乡河的小香瓜 | 来源:发表于2017-06-04 17:34 被阅读0次

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:

1.同一app内部的同一组件内的消息通信(单个或多个线程之间);

2.同一app内部的不同组件之间的消息通信(单个进程);

3.同一app具有多个进程的不同组件之间的消息通信;

4.不同app之间的组件之间消息通信;

5.Android系统在特定情况下与App之间的消息通信。

静态注册:

定义一个广播接收器继承BroadcastReceiver

packagecom.example.administrator.broadcastdemo;

importandroid.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

public class MyReceiver extendsBroadcastReceiver {

public MyReceiver() {

}

@Override

public void onReceive(Context context,Intent intent) {

Toast.makeText(context,intent.getStringExtra("info"),Toast.LENGTH_SHORT).show();

}

}

AndroidManifest.xml

android:name=".MyReceiver"

android:enabled="true"

android:exported="true">

MainActivity.class

packagecom.example.administrator.broadcastdemo;

import android.content.Intent;

import android.os.Bundle;

importandroid.support.v7.app.AppCompatActivity;

public class MainActivity extendsAppCompatActivity {

@Override

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//静态注册广播

Intent intent=new Intent();

//与清单文件的receiver的anction对应

intent.setAction("com.broadcast.test");

intent.putExtra("info","测试静态注册广播");

//发送广播

sendBroadcast(intent);

}

}

动态注册:

定义一个广播接收器继承BroadcastReceiver

packagecom.example.administrator.broadcastdemo;

importandroid.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.widget.Toast;

public class DynamicReceiverextends BroadcastReceiver {

public DynamicReceiver () {

}

@Override

public void onReceive(Context context,Intent intent) {

Toast.makeText(context,intent.getStringExtra("name"),Toast.LENGTH_SHORT).show();

}

}

Main2Activity.class

packagecom.example.administrator.broadcastdemo;

import android.content.Intent;

importandroid.content.IntentFilter;

importandroid.content.pm.ActivityInfo;

importandroid.content.res.Configuration;

importandroid.net.ConnectivityManager;

import android.os.Bundle;

importandroid.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.widget.Toast;

public class Main2Activityextends AppCompatActivity {

DynamicReceiver dynamicReceiver;

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main2);

//动态注册广播

dynamicReceiver = newDynamicReceiver();

IntentFilter intentFilter = newIntentFilter();

intentFilter.addAction("com.broadcast.test2");

registerReceiver(dynamicReceiver,intentFilter);

//发送信息

Intent intent=new Intent();

intent.setAction("com.broadcast.test2");

intent.putExtra("name","动态注册广播");

sendBroadcast(intent);

}

@Override

protected void onDestroy() {

super.onDestroy();

//解除广播

unregisterReceiver(dynamicReceiver);

}

}

AndroidManifest.xml

android:name=".DynamicReceiver"

android:enabled="true"

android:exported="true">

总结:

1)静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。

2)动态注册:在代码中通过registerReceiver()手工注册.当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。

android:enabled:

这个属性用于定义系统是否能够实例化这个广播接收器,如果设置为true,则能够实例化,如果设置为false,则不能被实例化。默认值是true。

元素有它自己的enabled属性,这个属性会应用给应用程序的所有组件,

包括广播接收器。和元素的这个属性都必须是true,这个广播接收器才能够被启用。如果有一个被设置为false,该广播接收器会被禁止实例化。

android:exported:

这个属性用于指示该广播接收器是否能够接收来自应用程序外部的消息,如果设置true,则能够接收,如果设置为false,则不能够接收。如果设置为false,这该接收只能接收那些由相同应用程序组件或带有相同用户ID的应用程序所发出的消息。

参考资料:

百度百科--安卓广播机制

菜鸟教程 http://www.runoob.com/android/android-broadcast-receivers.html

相关文章

  • 安卓四大组件之广播机制

    Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播...

  • activity 生命周期分享

    安卓四大组件:activity活动,服务Service,广播接收器(BroadcastReceiver),内容提供...

  • Broadcast Receiver

    广播的定义 四大组件之一,是安卓应用程序之间传递信息的机制。我们要发送的广播内容是一个Intent,这个Inten...

  • Android - base - Broadcast

    四大组件之广播 大纲 广播机制简介 广播接收器 广播发信器 接收系统广播 发送自定义广播 本地广播 #广播机制简介...

  • 2020-07-19

    四大组件之一,是安卓应用程序之间传递信息的机制。我们要发送的广播内容是一个Intent,这个Intent可以携带我...

  • 安卓重温基础--四大组件之Activity的基本操作

    什么是 Activity Activity 是一个应用组件,安卓四大组件之一(安卓四大组件包括 Activity、...

  • 安卓开发入门教程-广播

    什么是广播 广播是安卓系统内应用内各组件、应用间进行轻量化通信的一种机制.发出者发出广播,接收者接收广播. 广播类...

  • Android之广播机制学习笔记

    Android之广播机制的学习方法 什么是广播机制一提到广播我们第一感觉就会联想到小时候村里面的广播,安卓的广播机...

  • 广播接收者2

    1. 什么是广播?广播分为几部分? 广播电台:发送信号 收音机:接收信号 2. 广播接收者:安卓四大组件之一.用于...

  • Android 四大组件之Activity

    Android 四大组件之Activity 参考文章 小专栏·重学安卓[https://xiaozhuanlan....

网友评论

      本文标题:安卓四大组件之广播机制

      本文链接:https://www.haomeiwen.com/subject/zitbfxtx.html