动态注册监听网络变化

package com.example.guangbo1;


import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.Toast;


public class MainActivity extends Activity {
private NetworkChangeReceiver networkChangeReceiver;   
private IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
networkChangeReceiver  =new  NetworkChangeReceiver();
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVTY_CHANGE");
registerReceiver(networkChangeReceiver, intentFilter);
ConnectivityManager connectionManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
// 获取代表联网状态的NetWorkInfo对象
ConnectivityManager connectivityManager = null;
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
//获取当前的网络连接是否可用  
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
class NetworkChangeReceiver extends BroadcastReceiver{
public void onReceiver(Context context, Intent intent){
Toast.makeText(context, "network changes", Toast.LENGTH_SHORT);
}


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

}

}

动态注册监听网络变化

思路:如何建立一个广播接收器?

           首先在MainActivity中定义一个NetworkChangeReceiver内部类,让这个类继承BroadcastReceiver,并重写父类onReceive(0方法,这样当网络发生变化时,onReceive的方法就会执行,这里只是用Toast提示一下信息。

     然后在在OnCreate方法中创建一个IntentFilter的实例,并给它添加一个android.net.conn.CONNECTIVTY_CHANGE的action,(系统发出的广播就是android.net.conn.CONNECTIVTY_CHANGE的广播)接下来在建立一个NetworkChangeReceive的实例,然后调用registerReceive的方法来注册,将NetworkChangeReceive的实例与IntentFilte的实例都传进来,这样NetworkChangeReceive就会收到值为android.net.conn.CONNECTIVTY_CHANGE的广播

最后需要将动态注册广播进行注销,这里用onDestroy()方法调用unregisterReceiver()方法来实现


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值