LocalBroadcastManager的使用总结

来源:互联网 发布:中国联通无线上网 mac 编辑:程序博客网 时间:2024/05/19 17:06

前言:

LocalBroadcastManager有助于在应用内去注册和发送广播,相比于通过sendBroadcast(Intent)去发送的全局广播,LocalBroadcastManager有如下几点优势:

1>

你广播的数据不会离开你的应用程序,所以不需要担心泄漏的私人数据。

2>

其他应用通过LocalBroadcastManager发送的广播,其是不可能发送到你的app的,所以你不用担心安全漏洞问题。

3>

它比系统发送一个全局广播更有效


代码示例如下:

package com.example.administrator.testlocalbroadcastreceiver;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.view.View;import android.widget.Toast;public class LocalBroadcast extends AppCompatActivity {    private LocalBroadcastManager localBroadcastManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_local_broadcast);        localBroadcastManager = LocalBroadcastManager.getInstance(this);        /****         * 注册及侦听广播         * **/        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction("test");        localBroadcastManager.registerReceiver(new BroadcastReceiver() {            @Override            public void onReceive(Context context, Intent intent) {                Toast.makeText(LocalBroadcast.this,"已接收到广播",Toast.LENGTH_SHORT).show();            }        },intentFilter);    }    /***     * 发送广播     * **/     public void sendBroadcast(View view){         Intent intent = new Intent();         intent.setAction("test");         localBroadcastManager.sendBroadcast(intent);     }}

对应的布局文件如下:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.administrator.testlocalbroadcastreceiver.LocalBroadcast">    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="发送广播"        android:onClick="sendBroadcast"        /></RelativeLayout>


运行效果如下:



总结:

若广播的发送和接收都只用在本应用中,那么推荐使用LocalBroadcastManager进行广播的发送和注册


源码:

LocalBroadcastManager的代码示例源码


0 0
原创粉丝点击