2013-05-16 57 views
0

這裏不工作是我的應用程序的Java代碼:我的應用程序工作正常,在Android 2.3.3版本,但是在Android 4.2.2

public class Main extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    new GetUrl().execute(20); 

} 
private class GetUrl extends AsyncTask<Integer, Integer, BufferedReader> { 

    @Override 
    protected BufferedReader doInBackground(Integer... params) { 
     BufferedReader reader = null; 
     try { 
      URL url = null; 
      url = new URL("http://www.google.com"); 
      URLConnection conn = url.openConnection(); 
      reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

     } 
     catch (Exception e) { 
      TextView tv = (TextView) findViewById(R.id.textView1); 
      tv.setText("Error"); 
     } 
     return reader; 
    } 
    @Override 
    protected void onPostExecute(BufferedReader reader) { 
     TextView tv = (TextView) findViewById(R.id.textView1); 
     String line = null; 

     try { 
      line = reader.readLine().toString(); /*This line if removed removes the error. Whenever i try to work with the reader, it stops working for 4.2.2 but works fine for 2.3.3*/ 
      tv.setText(line); 


     } 
     catch(Exception e) { 
      tv.setText(e.getMessage()); 
     } 

    } 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

每當我試圖與讀寫器進行工作,它停止工作對於4.2.2而言,但對於2.3.3來說工作正常。我之前發佈過類似的問題,並被要求使用asyncTask解決問題,但這並沒有真正幫助我。

+0

這是什麼意思'停止工作'?你觀察到任何異常嗎? – sandrstar

+0

不,e.getMessage什麼也沒有顯示 –

+0

@sandstar你能來我的團隊查看器並檢查一下自己嗎 –

回答

0

您應該只能在doInBackground方法中訪問reader,後者在後臺線程上執行。

onPostExecute方法在UI線程上運行,應該只更新UI,不做任何其他工作。

所以,我建議改變你的AsyncTask到

AsyncTask<Integer, Integer, String> 

招行

reader.readLine().toString(); 

到onPostExecute,從doInBackground返回字符串,使參數onPostExecute字符串你讀。

+0

對,剛剛試過了代碼並觀察到'android.os.NetworkOnMainThreadException' – sandrstar

相關問題