我编写了一个类,该类启动一个http连接以获取例如网站。 我使用AsyncTask但我得到了NetworkOnMainException。你能救我吗? 班级
public class getXMLData extends AsyncTask<String, Void, String> {
TextView _textview;
public getXMLData(TextView textview) {
_textview = textview;
}
protected String doInBackground(String... url)
{
String _text = "";
try {
try {
URL _url = new URL(url[0]);
HttpURLConnection con = (HttpURLConnection) _url.openConnection();
_text = readStream(con.getInputStream());
}
catch (Exception e) {
e.printStackTrace();
}
}
catch (Exception e) {
e.printStackTrace();
}
return _text;
}
protected void onPostExecute(String result)
{
_textview.setText(result.toCharArray(), 0, result.length());
}
private String readStream(java.io.InputStream in) {
java.io.BufferedReader reader = null;
String result = "";
reader = new BufferedReader(new InputStreamReader(in));
try {
while ((reader.readLine() != null)) {
result = result + reader.readLine();
}
}
catch (java.io.IOException i)
{
}
finally
{
try {
reader.close();
}
catch (java.io.IOException e) {
e.printStackTrace();
}
}
return result;
}
这里我是如何启动AsyncTask的:
bu_aktualize.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_getXMLData.doInBackground("http://www.google.de");
}
});
感谢您的帮助。
答案 0 :(得分:5)
您不要自己致电doInBackground()
。相反,您可以致电execute()
或executeOnExecutor()
来启动AsyncTask
。
您可以查看the documentation for AsyncTask
,其中显示了设置AsyncTask
的示例,其中包括对execute()
的调用。