zoukankan      html  css  js  c++  java
  • 使用本地广播

    MainActivity中的代码,要先导入架包

     

    package com.example.broadcasttest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import androidx.localbroadcastmanager.content.LocalBroadcastManager;
    
    public class MainActivity extends AppCompatActivity {
    
        private IntentFilter intentFilter;
    
        private LocalReceiver localReceiver;
    
        private LocalBroadcastManager localBroadcastManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            localBroadcastManager=LocalBroadcastManager.getInstance(this);
            Button button=(Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
                    localBroadcastManager.sendBroadcast(intent);
                    //sendBroadcast(intent);
                    //sendOrderedBroadcast(intent,null);
                }
            });
            intentFilter=new IntentFilter();
            intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
            localReceiver=new LocalReceiver();
            localBroadcastManager.registerReceiver(localReceiver,intentFilter);
        }
    
        @Override
        protected void onDestroy(){
            super.onDestroy();
            localBroadcastManager.unregisterReceiver(localReceiver);
            //unregisterReceiver(networkChangeReceiver);
        }
    
        class LocalReceiver extends BroadcastReceiver{
    
            @Override
            public void onReceive(Context context,Intent intent){
                Toast.makeText(context,"received local broadcast",Toast.LENGTH_SHORT).show();
            }
        }
    
        /*class NetworkChangeReceiver extends BroadcastReceiver{
            @Override
            public void onReceive(Context context, Intent intent){
                ConnectivityManager connectionManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo networkInfo=connectionManager.getActiveNetworkInfo();
                if (networkInfo!=null&&networkInfo.isAvailable()){
                    Toast.makeText(context,"network is available",Toast.LENGTH_SHORT).show();
                }
                else{
                    Toast.makeText(context,"network is unavailable",Toast.LENGTH_SHORT).show();
                }
            }
        }*/
    }

    首先通过LocalBroadcastManager的getInstance()方法得到了它的一个实例,如何在注册广播接收器的时候调用LocalBroadcastManager的registerReceiver()方法,在发送广播的时候调用LocalBroadcastManager的sendBroadcast()方法。我们在按钮的点击事件里面发出了一条com.example.broadcasttest.LOCAL_BROADCAST广播,然后在LocalReceiver里去接收这条广播。

    运行结果如下图

  • 相关阅读:
    为什么Go没有三元运算符
    [Win10]鼠标没用,插入USB口电脑提示USB Optical Mouse找不到驱动程序的解决方案
    Office2016软件安装教程
    office2019软件安装教程
    Go语言 科学计算库 Gonum 学习1
    AI Studio 学习 Go 豆瓣电影爬取
    Git下载、安装与环境配置
    VueJS 数组哪些方法是响应式的
    VueJS v-for
    VueJS v-show
  • 原文地址:https://www.cnblogs.com/ccffhh/p/12238212.html
Copyright © 2011-2022 走看看