Постоянная проверка подключения к Интернету с помощью android

Я делаю приложение. Приложению требуется Интернет для 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

ConnectionDetector

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? Что делать, если пользователь входит в Activity, проверка проходит в onCreate, он заполняет форму, а затем его отключили от Интернета. Как мне проверить эту часть? И как мне реализовать это с моим текущим кодом? Вот почему в первом требовании я хотел постоянно проверять интернет-соединение. Но это разряжает батарею, как указал cbrulak


person mXX    schedule 17.06.2013    source источник
comment
Возможно, вам следует использовать настраиваемый прослушиватель событий, например [this] [2]. [2]: stackoverflow.com/questions/12157130/   -  person Karthik Balakrishnan    schedule 17.06.2013


Ответы (1)


См. Этот ответ: Как проверить доступ в Интернет на Android? InetAddress никогда не истекает

Однако я хотел бы указать на то, что вы, возможно, упустили: проверка постоянного подключения к Интернету потребляет электроэнергию. Большая мощность. Итак, что вы можете в конечном итоге сделать, так это разрядить батареи вашего пользователя (что будет иметь множество негативных последствий, а не только плохие отзывы).

Итак, может быть, мы могли бы поговорить о том, почему вам нужно постоянно проверять подключение к Интернету? Возможно, вы захотите узнать, как вы можете буферизовать свои сетевые запросы или кеширование и т. Д. Не стесняйтесь редактировать этот вопрос или даже создавать новый, просто дайте ссылку на него :)

person cbrulak    schedule 17.06.2013
comment
Правда, не думал об этом! Я обновил вопрос и добавил несколько фрагментов кода. Спасибо что подметил это! - person mXX; 17.06.2013