1

我做一个应用程序。该应用程序需要互联网进行 5 项活动,其他 4 项活动不需要互联网。

需要互联网的活动需要它,因为他们必须执行 CRUD 并对网站进行 httppost 以与数据库进行通信。所以目前在 onCreate 我会检查这样的互联网连接

ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
Boolean isInternetPresent = cd.isConnectingToInternet(); // true or false
if(isInternetPresent)
    Log.e("Internet available","Internet available");
    //Do httpPost logic here
else
    Log.e("Internet not available","Internet not available");
    //Tell the user that he needs internet

连接检测器

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;
    }
}

但是onCreate 之后呢?如果用户进入活动,检查通过 onCreate,他填写表格然后他与互联网断开连接怎么办。我如何检查这部分?以及如何用我当前的代码实现它?这就是为什么在第一个要求中我想要不断检查互联网连接。但这会像 cbrulak 指出的那样耗尽电池电量

4

1 回答 1

1

请参阅此答案:如何检查 Android 上的互联网访问?InetAddress 永远不会超时

但是我想指出您可能忽略的一些事情:检查持续的互联网连接会消耗电力。很大的力量。因此,您最终可能会耗尽用户的电池(这会产生很多负面后果,而不仅仅是差评)。

那么,也许我们可以谈谈为什么您需要不断检查互联网连接?您可能想研究如何缓冲网络请求或缓存等。随意编辑这个问题,甚至创建一个新问题,只需链接到它:)

于 2013-06-17T00:48:32.697 回答