zoukankan      html  css  js  c++  java
  • 本地广播 localBroadcastManager Android

    使用localBroadcastManager发出的广播只能在本应用程序的内部进行传递。类似于iOS的NSNotificationCenter

    App应用内广播可理解为一种局部广播,广播的发送者和接收者都同属于一个App。

    相比于全局广播(普通广播),App应用内广播优势体现在:安全性高 & 效率高

    步骤:

    1.注册广播(onResume方法内

    2.发送广播

    3.收到广播

    4.销毁广播(onPause方法内

    package com.fengbang.localbroadcasttest;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.support.v4.content.LocalBroadcastManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

    private IntentFilter intentFilter;
    private LocalReceiver localReceiver;
    private LocalBroadcastManager localBroadcastManager;


    private static final String TAG = "MainActivity";
    @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 view) {
    Intent intent = new Intent("com.fengbang.localbroadcasttest.LOCAL_BROADCAST");
    localBroadcastManager.sendBroadcast(intent);//发送广播
    }
    });

    }

    @Override
    protected void onResume() {
    super.onResume();

    intentFilter = new IntentFilter();
    intentFilter.addAction("com.fengbang.localbroadcasttest.LOCAL_BROADCAST");
    localReceiver = new LocalReceiver();
    localBroadcastManager.registerReceiver(localReceiver,intentFilter);//注册广播
    }

    @Override
    protected void onPause() {
    super.onPause();

    localBroadcastManager.unregisterReceiver(localReceiver);//销毁广播
    }

    class LocalReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "onReceive: 收到广播");
    }
    }
    }
  • 相关阅读:
    windows 安装 make
    go lang AES 加密
    Microsoft .NET Framework 5.0
    Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解
    ElasticSearch实战系列九: ELK日志系统介绍和安装
    1024快乐,加班使我快乐,福报如圣光醍醐灌顶!
    react-redux笔记
    (转)Vuex、Flux、Redux、Redux-saga、Dva、MobX
    React笔记
    SQLServer设置客户端使用IP地址登录
  • 原文地址:https://www.cnblogs.com/huangzs/p/9077991.html
Copyright © 2011-2022 走看看