【问题标题】:Advice on accesing internet connection关于访问互联网连接的建议
【发布时间】:2015-03-22 07:17:37
【问题描述】:

我实际上是在使用下面的代码来检查 android 应用程序的互联网连接

ConnectionDetector.java

package com.example.detectinternetconnection;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class ConnectionDetector {

    private Context _context;

    public ConnectionDetector(Context context){
        this._context = context;
    }

    public boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null) 
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null) 
                  for (int i = 0; i < info.length; i++) 
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
}

调用的方法是:

ConnectionDetector cd = new ConnectionDetector(getApplicationContext());

Boolean isInternetPresent = cd.isConnectingToInternet();

但是, 最近有人建议我说要使用它,但根本不相信要使用。需要你们所有聪明人的帮助,建议我是否写错了代码? 建议使用的代码:

public class ConnectionDetector {

    public static  boolean isConnectingToInternet(){
        ConnectivityManager connectivity = (ConnectivityManager) applicationcontext.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null) 
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null) 
                  for (int i = 0; i < info.length; i++) 
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
}

这样使用的代码

if(ConnectionDetector.isConnectingToInternet){
     // true and code 
}

请告诉我有什么区别?? 使用上下文定义对象是一个坏主意还是使用类的静态方法??

【问题讨论】:

    标签: java android static-methods


    【解决方案1】:

    您的原始代码没有错。但是,建议的替换稍微好一些,因为它更易于使用。亲眼所见,你的原始代码需要两行代码来创建一个对象并调用检查方法,而替换只是一行(一个方法调用)。

    【讨论】:

    • 静态引用是否比创建对象更好??
    • 对象存在的时间越长越好,同时进行多个操作。
    • 你不认为静态引用会一直持续到应用程序在设备上运行。它将非常适合内存点以及静态方法是否有任何结束或随时收集垃圾??
    • 如果我有 N 个地方在单个类中使用现有对象会更好还是 N 次在所有地方访问静态方法?你对这种方法有什么看法
    • 在这种情况下,使用静态方法将使用更少的内存,因为不需要分配 ConnectionDetector 对象。如果类有静态fields,你只需要担心长期内存使用,这里不是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多