1

アプリを作っています。アプリは 5 つのアクティビティでインターネットを必要としますが、他の 4 つのアクティビティではインターネットは必要ありません。

インターネットが必要なアクティビティには、CRUD を実行し、DB と通信するために Web サイトに 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 に答える