2013-05-16 38 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

相关问题