android.os.NetworkOnMainThreadException

    xiaoxiao2021-03-25  212

    从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

    最新回复(0)