2
public String getBrotherHood() throws Exception{        
    client = new DefaultHttpClient();
    get = new HttpGet(uri);
    res = client.execute(get);
    sl = res.getStatusLine();
    sCode = sl.getStatusCode();
    if(sCode==200)
    {
        try{
            reader = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
            readBuffer = new StringBuffer();
            while((nl = reader.readLine())!=null){
                readBuffer.append(nl);
            }
            reader.close();
        }finally{
            if(reader !=null)
            {
                try{
                    reader.close();
                }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    return readBuffer.toString();       
  }
}

私はこのコードを持っています、これはそれを書くための適切な方法ですか、それともコーディングパターンや標準に従う必要がありますか?

Androidコーディングではなく、いくつかの提案をお願いします。

アップデート:

public class JSONData {

public ArrayList<String> getBrotherHoodJSON() throws JSONException,IOException,Exception{
    ArrayList<String> item = new ArrayList<String>();
    JSONArray jA = new JSONArray(getBrotherHood());

    for(int i=0; i<jA.length(); i++)
    {
        JSONObject jO = jA.getJSONObject(i);
        String n = jO.getString("name");
        item.add(n);
        Log.i("JsonData:",jO.getString("name"));
    }

    return item;
}   

public String getBrotherHood() throws Exception{    
    BufferedReader in = null;
    String data= null;
    HttpClient client = new DefaultHttpClient();
    URI uri = new URI("http://fahidmohammad.in/demo/Android/api.php?user=fah");
    HttpGet get = new HttpGet();
    get.setURI(uri);
    HttpResponse res = client.execute(get);
    StatusLine sl = res.getStatusLine();
    int sCode = sl.getStatusCode();
    if(sCode==200)
    {
        try{
            in = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
            StringBuffer sb = new StringBuffer();
            String nl;
            while((nl = in.readLine())!=null){
                sb.append(nl);
            }
            in.close();
            data = sb.toString();
            Log.i("Raw Data:",data);
            return data;
        }finally{
            if(in !=null)
            {
                try{
                    in.close();
                    return data;
                }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    return data;        
}

これが同じコードの更新バージョンです。言及されたすべての問題の世話をしました。

また、それは魅力のように機能しますが、その安定性はわかりません。

4

3 に答える 3

1

このメソッド内でのみ使用されているように見えますが、メソッドの外部ですべての変数を宣言したことは明らかです。それは意味がありません。複数のオブジェクトがガベージ コレクションされるのを防ぎます。宣言をメソッドに移動することをお勧めします。

そして、宣言throws Exceptionもあまり意味がありません。発生する可能性のある特定の例外を宣言するか、可能性の低いすべての例外RuntimeExceptionを宣言する必要がないように変換する方が適切です。

于 2012-06-16T10:46:56.637 に答える
0

readBuffer変数を再評価するもう1つの重要なポイント

関数の最後でreadBuffer.toString()を返し、ステータスが200の場合にのみこれを初期化しました。ただし、ステータスが200でない場合は、nullになります(宣言が表示されないと仮定)。したがって、null.toString()は例外だと思った。

于 2012-06-16T11:08:19.523 に答える
0

デフォルトのコード フォーマッタが利用できる Eclipse があります。コードを書いた後、「Control + Shift + F」と入力するだけです。Android コードは自動的にフォーマットされます。

于 2012-06-16T10:40:50.617 に答える