android.os.NetworkOnMainThreadException异常的解决方法

来源:互联网 发布:盗墓笔记录像 知乎 编辑:程序博客网 时间:2024/05/17 22:25

产生 android.os.NetworkOnMainThreadException的原因:

一个APP如果在主线程中请求网络操作,将会抛出此异常。Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。

 

解决方法:一个是使用StrictMode,二是使用线程来操作网络请求。

 

笔者是使用线程解决的此异常,实例如下:

String word = "";private Handler mHandler = new Handler() {         public void handleMessage(Message msg) {            switch (msg.what) {            case 0:            lrcView.setText("");            lrcView.setText(word);                break;            }        }    };

 

new Thread(new Runnable() {                        public void run() {                // TODO Auto-generated method stub                Looper.prepare();//初始化当前线程                getLrcs();//定义取得歌词的方法                Looper.loop();//执行当前线程            }        }).start();
 
private void getLrcs() {// TODO Auto-generated method stublrc search = new lrc("包容","郑源");        ArrayList result = search.fetchLyric();        word = "";        if (result.size() > 0) {            for (int i = 0; i < result.size(); i++) {                word += result.get(i);                word += "\n";            }        }        Message msg = mHandler.obtainMessage(0);        mHandler.sendMessage(msg);}


 

 

 

0 0
原创粉丝点击