zoukankan      html  css  js  c++  java
  • android中实现本地广播

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

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

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

    package com.example.chenrui.app1;
    
    import android.content.BroadcastReceiver;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.wifi.WifiManager;
    import android.support.v4.content.LocalBroadcastManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        private BroadcastReceiver receiver;
        private LocalBroadcastManager manager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            IntentFilter filter = new IntentFilter();
            filter.addAction("com.example.chenrui.app1.broadcast2");
            receiver = new BroadcastReceiver() {
                @Override
                public void onReceive(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(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent("com.example.chenrui.app1.broadcast2");
                    intent.putExtra("key","hello world");
                    manager.sendBroadcast(intent);
                }
            });
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            manager.unregisterReceiver(receiver);
        }
    
    }

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

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

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

  • 相关阅读:
    python有哪些关键字?让他自己“吐”出来!
    jquery获取表单元素与回显
    前端开发笔记--flex布局
    Vue-Quill-Editor回显不显示空格的处理办法
    react项目中antd组件库的使用需要注意的问题
    React Native 列表的总结
    是时候了解React Native了
    Android 整合实现简单易用、功能强大的RecyclerView
    linux centos 一键安装环境
    推翻自己和过往,重学自定义View
  • 原文地址:https://www.cnblogs.com/modou/p/10266811.html
Copyright © 2011-2022 走看看