回调以及动态注册广播

原创 2018年04月16日 16:16:34

需求实现:activity内注册broadcastReceiver,broadcastReceiver接收到广播后,调用activity里边的方法。

eg:网络链接状态改变后,刷新界面。

1.写自己的receiver:

/**
 * 监听wifi链接变化
 * @author fhzm
 *
 */
public class WifiReceiver extends BroadcastReceiver{
	
	private WifiStateListener wifiStateListener;

	@Override
	public void onReceive(Context context, Intent intent) {
		 // 这个监听网络连接的设置,包括wifi和移动数据的打开和关闭。.
        // 最好用的还是这个监听。wifi如果打开,关闭,以及连接上可用的连接都会接到监听
        // 这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
            ConnectivityManager manager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
            if (activeNetwork != null) { // connected to the internet
                if (activeNetwork.isConnected()) {
                    if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
                        //"当前WiFi连接可用 "
                    	wifiStateListener.WifiSate(1);
                    } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
                        //"当前移动网络连接可用 "
                    	wifiStateListener.WifiSate(1);
                    }
                } else {
                    // "当前没有网络连接,请确保你已经打开网络 "
                	wifiStateListener.WifiSate(0);
                }
            } else {   // not connected to the internet
            	wifiStateListener.WifiSate(0);
                //"当前没有网络连接,请确保你已经打开网络 "
            }
        }
	}
	
	public interface WifiStateListener{
		public void WifiSate(int state);
	}
	
	public void setWifiStateListener(WifiStateListener wifiStateListener) {
		this.wifiStateListener = wifiStateListener; 
	}

}

2.在manifest文件中注册

<receiver android:name="com.xxx.xxx.receiver.WifiReceiver" >
        </receiver>

3.在activity中:

/**
	 * 监听wifi链接状态
	 */
	private void setWifiListener() {
		WifiReceiver wifiReceiver = new WifiReceiver();
		IntentFilter intentFilter = new IntentFilter(); 
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
		wifiReceiver.setWifiStateListener(new WifiStateListener() {
			@Override
			public void WifiSate(int state) {
				if(state == 1){//网络链接成功
					initData();
					wifiConnState = true;
				}else{//网络无链接
					wifiConnState = false;
				}
			}
		});
		registerReceiver(wifiReceiver,intentFilter);
	}


BroadcastReceiver register 广播的动态注册方式

1.动态注册方式特点:在代码中进行注册后,当应用程序关闭后,就不再进行监听。 下面是具体的例子: BroadcastTest.java package com.czz.test; impo...
  • Vincent_czz
  • Vincent_czz
  • 2011年12月01日 11:16
  • 41100

动态注册广播接收者

通过broadcast(广播)的形式 当我们的进度发生变化的时候我们发送一条广播,然后在Activity的注册广播接收器,接收到广播之后更新ProgressBar,代码如下 package com...
  • u012246458
  • u012246458
  • 2016年01月26日 15:03
  • 3353

动态注册广播

广播分为有序广播(Ordered brodcasts)和无序广播(Normal broadcasts) 有序广播是一种同步执行的广播,在同一时间段,只有一个广播发出,只有等这个广播执行完,才会发向下一...
  • majiaxiang_2015
  • majiaxiang_2015
  • 2016年04月16日 18:13
  • 1317

android 动态注册广播

步骤: (一)使用 Button
  • tzshlyt
  • tzshlyt
  • 2014年05月28日 00:10
  • 1047

广播的动态注册和静态注册以及系统广播的使用!

广播的动态注册和静态注册以及系统广播的使用! 作者:燕潇洒 导读:前面在说使用广播实现进程间的被动通信的时候,没有考虑到大家是否懂得如何发送广播,在http://blog.csdn.ne...
  • yanxiaosa
  • yanxiaosa
  • 2017年03月03日 10:08
  • 1187

动态注册广播基本使用

动态注册广播就是不在Manifest中写fliter,之所以这样是因为有时候需要监听该广播并响应。但是有时候又不需要监听,所以需要在代码中动态的注册广播并且当不需要的时候就取消注册。     下面以屏...
  • qq_34723470
  • qq_34723470
  • 2017年05月01日 00:17
  • 420

【Android】动态注册广播接收器

从本质来说,Android 系统的广播机制是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息;而对 Android 应用程序来说,订阅消息其实就是注册广播接收器。     注册...
  • Etzmico
  • Etzmico
  • 2012年03月04日 12:20
  • 42799

Android之广播机制—动态注册

动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。 灵活性方面有很大的优势。 需要注意的是,动态注册的广播接收器一定要取消注册才行。 @Override public v...
  • qq_30365153
  • qq_30365153
  • 2016年04月14日 02:25
  • 471

Android——动态广播实例

通过一个Activity发出改变背景颜色的广播,另一个Activity接收广播来改变自己的背景。效果图:小的类似于dialog其实是一个Activity,只是这个Activity的主题样式改为了Dia...
  • Li_peilun
  • Li_peilun
  • 2017年03月15日 18:34
  • 139

Android中广播的使用(动态、静态注册的区别,有序无序广播的使用)

首先区别一下静态注册和动态注册的区别:  1.常驻型广播  常驻型广播,当你的应用程序关闭了(进程没有被杀死时,也就是在后台运行时才能收到广播),如果有广播信息来,你写的广播接收器同样的能接收到,它的...
  • OONullPointerAlex
  • OONullPointerAlex
  • 2015年08月26日 23:51
  • 5680
收藏助手
不良信息举报
您举报文章:回调以及动态注册广播
举报原因:
原因补充:

(最多只允许输入30个字)