在每项活动中检查互联网连接?

时间:2013-03-30 02:06:39

标签: android

我在这个过程中做得太迟了。我有很多屏幕/活动都需要连接到互联网,无论是wifi还是网络都无所谓。我可以检测到连接正常,但是我是否需要对每个活动执行此检查,或者是否有全局方式为我的应用程序执行此操作?

在添加大量代码之前我想过要问。

4 个答案:

答案 0 :(得分:7)

您可以使用Activity之类的内容InternetActivity进行子类化,并在onResume中检查连接。然后,您应用中需要互联网的所有活动都应该是InternetActivity的子类,并会自动通过调用super.onResume()或不覆盖onResume进行检查。

答案 1 :(得分:2)

public class CheckNetwork {


private static final String TAG = CheckNetwork.class.getSimpleName();



public static boolean isInternetAvailable(Context context)
{
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

    if (info == null)
    {
         Log.d(TAG,"no internet connection");
         return false;
    }
    else
    {
        if(info.isConnected())
        {
            Log.d(TAG," internet connection available...");
            return true;
        }
        else
        {
            Log.d(TAG," internet connection");
            return true;
        }

    }
}
 }

检查Netowrk

在您的活动中

  if(CheckNetwork.isInternetAvailable(MainActivtiy.this))  //if connection available
  {

  }

每当您想要检查互联网传递时,如果可用,则活动上下文返回true。

Detect whether there is an Internet connection available on Android

How to check internet access on Android? InetAddress never times out

答案 2 :(得分:0)

通过使用BroadcastReceiver,您可以想到另一个有趣的解决方案。所以现在你计划检查这么多次。您不会这样做,只会在网络连接发生变化时进行检查,并相应地通知您的网络模块。

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);        
registerReceiver(YOUR_RECEIVER, filter);

答案 3 :(得分:-1)

正如Tushar回答above一样,继承InternetActivity之类的内容很好,但除非您使用的是一些经常需要互联网连接的服务,否则不应在onResume中查看。而是在发生按钮点击等事件时检查它以转到下一个活动;因此,无需启动其他活动,您可以显示一个Toast来检查互联网连接。您应该为任何需要互联网的活动执行此操作,因为整个活动很少需要持续的互联网连接。

您可以在该超类中添加此方法:

private boolean isInternetConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isConnectedOrConnecting();

}

然后:

if(isInternetConnected())
     //to the internet thing
else
     //display toast