Android的服务,检查互联网连接? [英] Android service to check internet connectivity?

查看:107
本文介绍了Android的服务,检查互联网连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个Android服务,通知的主要活动时断开连接,并在互联网再次重新连接。我有以下功能检查互联网连接。

I want to create an Android service, which notifies the main activity whenever disconnects and when internet reconnects again. I have following function for checking internet connectivity:.

private boolean haveInternet(){
        NetworkInfo info=(NetworkInfo)((ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

        if(info==null || !info.isConnected()){
            return false;
        }
        if(info.isRoaming()){
            //here is the roaming option you can change it if you want to disable internet while roaming, just return false
            return true;
        }
        return true;
    }

不过,我想知道,如何使用它的服务。

But I want to know, how to use it in a service.

推荐答案

服务是专为长期化背景下运行的任务。 您应该使用的BroadcastReceiver

Services are designed for long backgroud running task. You should use a BroadcastReceiver:

这是我用来监视网络状态到我的主要活动的样本方法:

This is a sample method I use to monitor the network state into my main Activity:

private void installListener() {

        if (broadcastReceiver == null) {

            broadcastReceiver = new BroadcastReceiver() {

                @Override
                public void onReceive(Context context, Intent intent) {

                    Bundle extras = intent.getExtras();

                    NetworkInfo info = (NetworkInfo) extras
                            .getParcelable("networkInfo");

                    State state = info.getState();
                    Log.d("InternalBroadcastReceiver", info.toString() + " "
                            + state.toString());

                    if (state == State.CONNECTED) {

                        onNetworkUp();

                    } else {

                        onNetworkDown();

                    }

                }
            };

            final IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            registerReceiver(broadcastReceiver, intentFilter);
        }
    }

记住调用unregisterReceiver时的onDestroy事件发生

Remember to call unregisterReceiver when the onDestroy event occurs

希望这有助于。

这篇关于Android的服务,检查互联网连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆