美文网首页
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 动态注册广播

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