//http get
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://192.168.1.144/plus/taomei02/items_list2.php?action=android");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
提示错误:E/log_tag(5487): Error in http connectionandroid.os.NetworkOnMainThreadException是不是系统不允许在主线程执行网络请求,那该怎么解决呢
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://192.168.1.144/plus/taomei02/items_list2.php?action=android");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
提示错误:E/log_tag(5487): Error in http connectionandroid.os.NetworkOnMainThreadException是不是系统不允许在主线程执行网络请求,那该怎么解决呢
你可以在一个新线程中做网络操作。
(new Thread() { @Override
public void run() {
// 这里做网络操作
} }).start();
在程序启动后加入以下代码 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
StrictMode可以用来监视哪些费时操作放在了UI主线程(flash I/O,network I/O等),在release版本中应该去掉相应的代码
StrictMode可以用来监视哪些费时操作放在了UI主线程(flash I/O,network I/O等),在release版本中应该去掉相应的代码恩,是的,耗时操作都应该放在子线程中才是对的