android的Service+BroadcastReceiver对网络连接进行监听

BroadcastReceiver代码:

public class ConnChangedReceiver extends BroadcastReceiver {


private ConnectivityManager connManager;
private NetworkInfo network;
private boolean isNetworkAvailable=false;//标识变量,表示当前网络是否连接

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){
check(context);
}
}


private void check(Context ctx){
connManager=(ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);

//判断是否有可用网络
network=connManager.getActiveNetworkInfo();
if(null!=network&&network.isAvailable()){
if(!isNetworkAvailable){
isNetworkAvailable=true;
System.out.println("有可用网络....");
}
}else{
if(isNetworkAvailable){
isNetworkAvailable=false;
System.out.println("无可用网络....");
}
}
}

}


Service代码:

public class NetworkStateService extends Service {


private ConnChangedReceiver connReceiver;

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}


@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();

connReceiver=new ConnChangedReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connReceiver, filter);//为Service注册广播
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

unregisterReceiver(connReceiver);//注销Service的广播
}
}


MainActivity代码:

public class MainAt extends Activity implements OnClickListener{

private Button start,stop;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.at_main);

start=(Button) findViewById(R.id.start);
stop=(Button) findViewById(R.id.stop);

start.setOnClickListener(this);
stop.setOnClickListener(this);
}


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.start){
startService(new Intent(MainAt.this,NetworkStateService.class));//开启Service
}else{
stopService(new Intent(MainAt.this,NetworkStateService.class));//停止Service
}
}
}


最后记得在AndroidManifest把Service配置上:

<service android:name="com.xxx.NetworkStateService"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值