美文网首页
android 动态注册广播

android 动态注册广播

作者: 一个冬季 | 来源:发表于2019-06-27 14:07 被阅读0次
需求

如果用户登录了,需要注册了广播的部分页面重新刷新数据,同样注册了相同广播的可以不用刷新页面

代码实现
/**
* @date: 2019/4/28 0028
* @author: gaoxiaoxiong
* @description:广播接收器
**/
public class LocalBroadcastReceiver extends BroadcastReceiver {
    private OnClassNameListener onClassNameListener;
    public interface OnClassNameListener{
       void className(String name,Intent intent);//className
    }

    public void setOnClassNameListener(OnClassNameListener onClassNameListener) {
        this.onClassNameListener = onClassNameListener;
    }

    public static String BROADCASTNAME="className";
    @Override
    public void onReceive(Context context, Intent intent) {
        if (onClassNameListener!=null){
            String className = intent.getStringExtra(BROADCASTNAME);
           if(className !=null)
              onClassNameListener.className(className,intent);
        }
          //当然了,用户可以根据设置的actionName来操作
         if (intent.getAction().equals(SPMobileConstants.RELOADACTION)){
   
         }
    }
}

用户可以通过这个className决定是否刷新数据

发送广播

  public static String RELOADACTION="com.xxxxx.reloadAction";//重新加载
  Intent messageIntent = new Intent(RELOADACTION);
  messageIntent.putExtra(BROADCASTNAME,"MainTwoFragment");
  LocalBroadcastManager.getInstance(mActivity).sendBroadcast(messageIntent);

广播监听

        LocalBroadcastReceiver localBroadcastReceiver;
       //注册广播监听,用户可以根据判断传递的name是不是自己需要的对应的名字就决定是否去刷新页面
        if (localBroadcastReceiver == null){
            localBroadcastReceiver = new LocalBroadcastReceiver();
            localBroadcastReceiver.setOnClassNameListener(new LocalBroadcastReceiver.OnClassNameListener() {
                @Override
                public void className(String name, Intent intent) {
                    if (!StringUtils.isEmpty(name) && name.equals("MainTwoFragment")){
                     //做一些MainTwoFragment的操作
                    }

                }
            });
            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(RELOADACTION);
            LocalBroadcastManager.getInstance(this.getActivity()).registerReceiver(localBroadcastReceiver,intentFilter);
        }
        //一定要记得销毁,解绑
     @Override
    public void onDestroyView() {
        super.onDestroyView();
        if (localBroadcastReceiver!=null){
            LocalBroadcastManager.getInstance(this.getActivity()).unregisterReceiver(localBroadcastReceiver);
            localBroadcastReceiver = null;
        }
    }

相关文章

  • Android动态广播(Android8.0)

    Android广播事件 (1).广播注册分类 (a).动态注册 在...

  • Android 发送接收广播原理

    前言 本文代码基于 Android R。 注册广播接收者 Android 可以动态和静态注册广播接收者。动态广播接...

  • android 动态注册广播

    需求 如果用户登录了,需要注册了广播的部分页面重新刷新数据,同样注册了相同广播的可以不用刷新页面 代码实现 用户可...

  • 广播的注册、发送原理流程

    本次源码基于Android11分析 相关源码: 广播的注册 广播的注册分为:静态注册和动态注册。静态注册是在And...

  • VirtualApk源码分析-BroadcastReceiver

    广播的注册分为静态注册和动态注册两种,android关于广播的源码分析可以参照此文 : https://www.j...

  • 第一行代码 -- 笔记2

    五、广播机制 1.接收系统广播 动态注册监听时间变化 静态注册实现开机启动 在 Android 8.0 系统之后,...

  • 富立叶F760 PDA

    要注意 android8.0 及以上不允许静态注册广播,只能代码动态注册。

  • Android 电池电量

    Android 中通过广播获取电池电量信息. 电量信息只能通过动态注册广播才能获取到. 1.0 注册广播的两种方式...

  • Android 和PC的adb 通讯

    Android 8.0及以后,不能监听隐式的系统广播,就动态的注册广播, 或者 如果一定要Manifest静态注册...

  • Broadcast广播的使用

    一、广播的注册注册一个广播接收者来接收广播 1、动态注册广播动态注册广播,记得取消 2、静态注册二、广播开启其他组件

网友评论

      本文标题:android 动态注册广播

      本文链接:https://www.haomeiwen.com/subject/dntrcctx.html