从Honeycomb SDK 3.0 开始google不再允许网络请求(HTTP、Socket)等相关操作直接在Main Thread类中,因为直接在UI线程进行网络操作,会阻塞UI、用户体验。
所以在Honeycomb SDK 3.0 以下的版本,可以继续在Main Thread里进行,但在3.0以上,就不行了。
1,在与network有关的耗时操作放到一个子线程里进行,然后用Handler消息机制与主线程通信;
2,使用异步机制如:asynctask;
3,在访问网络的代码前面添加如下代码即可:
StrictMode.ThreadPolicy policy=
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.
setThreadPolicy(policy);(不推荐)
或:新建子线程:
new Thread(
new Runnable() {
@Override
public void run() {
try {
}
catch (Exception e) {
e.printStackTrace();
}
}
}).start();
转载请注明原文地址: https://ju.6miu.com/read-1151.html