0

私はこの質問が以前に答えられたことがあることを知っていますが、私の特定のケースを扱う答えを見つけることができませんでした。

ネットワーク状態とhttpタイムアウトのチェックを処理する「InternetConnectionChecks」というクラスを作成したいと思います。アプリでメソッドを2回呼び出します(サーバーからデータを取得するために最初に1回、サーバーにユーザー注文を送信するために最後に1回)。

良い形にするために、コードのさまざまなポイントでコピー/貼り付けするのではなく、これらすべてのメソッドを1つのクラスに配置したいと思います。

ネットワークの状態を確認するために、ConnectivityManagerを使用しています。つまり、getSystemServiceには、Activityを拡張するクラスが必要です。

package arbuckle.app;

import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class InternetConnectionChecks extends Activity {

    public boolean isNetworkAvailable(){
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
            return true;
        }else{
            return false;
        }
    }

}

質問:アクティビティではないクラスでこのコードを使用する必要があります。実際、このメソッドをアクティビティではない別のクラスに設定したいと思います。それ、どうやったら出来るの?

4

1 に答える 1

1

静的メソッドを使用してutilクラスを作成します

public class Utils{

public static boolean isNetworkAvailable(Context context){
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    if ((activeNetworkInfo != null)&&(activeNetworkInfo.isConnected())){
        return true;
    }else{
        return false;
    }
}

}

活動内での使用

boolean isNetworkAvailable = Utils.isNetworkAvailable(this);
于 2012-09-20T21:36:42.753 に答える