我在某个时候收到了NetworkonMainThreadException。我不知道是什么问题。第一次打开时没有错误,但几次关闭和打开后会导致NetworkOnMainThreadException。有时在AsyncTask中networkonmainthreadexception
下面是我的MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new DownloadWebpageTask().execute();
}
@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;
}
private class DownloadWebpageTask extends AsyncTask<String, Void, String> {
List<Member> members = new ArrayList<Member>();
ListView listView = (ListView) findViewById(R.id.listView1);
String ss = "";
InputStream is;
HttpURLConnection connection ;
@Override
protected String doInBackground(String... urls) {
try {
URL url = new URL("http://192.168.1.107:8080/SEWS_webservice/rest/members");
connection = (HttpURLConnection) url.openConnection();
is = connection.getInputStream();
} catch (IOException e) {
System.out.println(e+"***********************&&&&&&&&&&&&&");
}finally {
connection.disconnect();
}
return ss;
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
XmlPullParserHandler parser = new XmlPullParserHandler();
parser.parse(is);
members = parser.getMembers();
ArrayAdapter<Member> adapter = new ArrayAdapter<Member>(getApplicationContext(),android.R.layout.simple_list_item_1, members);
listView.setAdapter(adapter);
}
}
}
这是XMLPullParser处理
public class XmlPullParserHandler {
private List<Member> members= new ArrayList<Member>();
private Member member;
private String text;
public List<Member> getMembers() {
return members;
}
public List<Member> parse(InputStream is) {
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
parser.setInput(is, null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
String tagname = parser.getName();
switch (eventType) {
case XmlPullParser.START_TAG:
if (tagname.equalsIgnoreCase("member")) {
// create a new instance of employee
member = new Member();
}
break;
case XmlPullParser.TEXT:
text = parser.getText();
break;
case XmlPullParser.END_TAG:
if (tagname.equalsIgnoreCase("member")) {
// add employee object to list
members.add(member);
}else if (tagname.equalsIgnoreCase("memberId")) {
member.setMemberId(Integer.parseInt(text));
}
else if (tagname.equalsIgnoreCase("firstName")) {
member.setFirstName(text);
}
else if (tagname.equalsIgnoreCase("middleName")) {
member.setMiddleName(text);
}
else if (tagname.equalsIgnoreCase("lastName")) {
member.setLastName(text);
}
break;
default:
break;
}
eventType = parser.next();
}
} catch (XmlPullParserException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}
return members;
}
}
请添加堆栈跟踪例外 –
伙计,请选择帮助你的答案。 –