0

私はネットワークの状態を確認するためにこの方法を使用していました:

public boolean hasConnection() {
    ConnectivityManager cm = (ConnectivityManager) SigninActivity.this
            .getBaseContext()
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiNetwork = cm
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifiNetwork != null && wifiNetwork.isConnected()) {
        return true;
    }

    NetworkInfo mobileNetwork = cm
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (mobileNetwork != null && mobileNetwork.isConnected()) {
        return true;
    }

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
        return true;
    }

    return false;
}

次に、このクラスを使用して、json の for Web サービスを呼び出します。

    public class JSONParser {

InputStream is = null;
JSONObject jObj = null;
String json = "";
HttpClient httpClient;

// constructor
public JSONParser() {

}

public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try { // defaultHttpClient DefaultHttpClient
        httpClient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        reader.close();
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}
    }

しかし、通常の状態ではうまく機能していた非常に遅いネットワークでアプリがクラッシュしています。強制終了を回避するためのより良い方法を提案できますか?

「私はこのクラスを AsyncTask クラスの doInBackground メソッドから呼び出していました。 よろしくお願いします。

4

0 に答える 0