android.os.NetworkOnMainThreadException

来源:互联网 发布:directmail 阿里云 编辑:程序博客网 时间:2024/06/06 03:42

使用Okhttp请求的时候程序遇到这个问题崩溃了,原因是在UI线程中请求网络,这在安卓中是不被允许的,解决办法是开启新的线程并使用Handler和Message处理消息,具体如下:

这里写图片描述

关键代码如下:

 private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_LONG).show();        }    };
 new Thread(new Runnable() {            @Override            public void run() {                try {                    String s = OkUtils.loadStringFromUrl(Constants.URL);                    if(s==null){                    }else {                        Message m = Message.obtain();                        m.obj = s;                        handler.sendMessage(m);                    }                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();
原创粉丝点击