android中实现本地广播

摘要:
因为自定义广播可以被外部应用接收到,静态注册功能允许在程序未启动的情况下能收到广播。本地广播只能被自己接收到,也就不需要静态注册的功能了。上面的代码,同时实现了广播的时候,传递数据功能。代码很好理解,这里就不做解释了。

上一篇文章实现了自定义广播:android中实现自定义广播

自定义广播允许被其他应用使用,有些情况下只允许广播在本应用范围内使用,可以用本地广播的方式实现

下面是实现的代码部分,MainActivity.java:

packagecom.example.chenrui.app1;
importandroid.content.BroadcastReceiver;
importandroid.content.ComponentName;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.content.IntentFilter;
importandroid.net.wifi.WifiManager;
importandroid.support.v4.content.LocalBroadcastManager;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.Toast;
public class MainActivity extendsAppCompatActivity {
    privateBroadcastReceiver receiver;
    privateLocalBroadcastManager manager;
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        IntentFilter filter = newIntentFilter();
        filter.addAction("com.example.chenrui.app1.broadcast2");
        receiver = newBroadcastReceiver() {
            @Override
            public voidonReceive(Context context, Intent intent) {
                String key = intent.getStringExtra("key");
                Toast.makeText(context, "接收广播2,key:" +key, Toast.LENGTH_SHORT).show();
            }
        };
        manager = LocalBroadcastManager.getInstance(this);
        manager.registerReceiver(receiver,filter);
        Button button =findViewById(R.id.button1);
        button.setOnClickListener(newView.OnClickListener() {
            @Override
            public voidonClick(View v) {
                Intent intent = new Intent("com.example.chenrui.app1.broadcast2");
                intent.putExtra("key","hello world");
                manager.sendBroadcast(intent);
            }
        });
    }
    @Override
    protected voidonDestroy() {
        super.onDestroy();
        manager.unregisterReceiver(receiver);
    }
}

本地广播的方式,发送广播和接收广播都是在一个类里面实现的,代码跟之前自定义广播的代码很类似,只有很小的改动。

本地广播只能以动态注册的方式注册,无法像自定义广播以静态的方式注册。因为自定义广播可以被外部应用接收到,静态注册功能允许在程序未启动的情况下能收到广播。本地广播只能被自己接收到,也就不需要静态注册的功能了。

上面的代码,同时实现了广播的时候,传递数据功能。代码很好理解,这里就不做解释了。

免责声明:文章转载自《android中实现本地广播》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#基础知识python版本更新升级后第三方库不见了的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Boot 核心配置文件 bootstrap & application

Spring Boot 核心配置文件 bootstrap & application 1、SpringBoot bootstrap配置文件不生效问题 2、bootstrap/ application 的区别 3、bootstrap/ application 的应用场景 4、高级使用场景 4.1 启动上下文 4.2 应用上下文层次结构 4.3...

事务persistenceJPA基本API描述

改章节笔者在北京喝咖啡的时候突然想到的...近期就有想写几篇关于事务persistence的博客,所以回家到以后就奋笔疾书的写出来发布了 JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口。 JPA是JSR-220(EJB3.0)标准的一部分,在JSR-220中划定实体对象(...

JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--实现

先学习下new操作符吧 new关键字调用函数的心路历程: 1.创建一个新对象 2.将函数的作用域赋给新对象(this就指向这个对象) 3.执行函数中的代码 4.返回这个对象 根据这个的思路,来实现一个简单的new操作吧,代码演示: 1 function myNew(Func, ...args) { 2 if (typeof Func !== 'fu...

ASP.NET Core 认证与授权[1]:初识认证 (笔记)

原文链接:  https://www.cnblogs.com/RainingNight/p/introduce-basic-authentication-in-asp-net-core.html 在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用。但是它很难进行扩展,更无法与第三方认证...

Django前端获取后端数据之前端自定义函数

在写网站的时候遇到了一个问题: Django在后端向前端传数据时,多数会使用dict字典来传送多个数据,但前端只能遍历,没有一个用key取到value值的方法可以直接使用 如果作为一个list传递到前端,结构相同情况下,遍历确实够用。但是使用dict时多数会使用单个key取value放到不同的地方使用,Django提供的方法就不够用了。 所以这篇文章介绍一...

使用 ASP.NET 一般处理程序或 WebService 返回 JSON

今天, 将为大家说明如何在 ASP.NET 中使用一般处理程序或者 WebService 向 javascript 返回 JSON. 本文更新: 2011-12-9: 增加 -:data 的说明. 由于精力有限, 不能在多个博客中保证文章的同步, 可在如下地址查看最新内容, 请谅解: http://code.google.com/p/zsharedcode...