Android 安卓:Can';t在主线程上执行网络操作

Android 安卓:Can';t在主线程上执行网络操作,android,Android,可能重复: 我正在尝试为android构建一个RSS阅读器。 这是我的密码。我收到一个错误消息,说无法在线程上执行网络操作 URL url = null; try { url = new URL((data.get(position).getThumbnail())); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } InputStream content

可能重复:

我正在尝试为android构建一个RSS阅读器。 这是我的密码。我收到一个错误消息,说无法在线程上执行网络操作

URL url = null;
try {
url = new URL((data.get(position).getThumbnail()));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStream content = null;
try {
content = (InputStream)url.getContent();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Drawable d = Drawable.createFromStream(content , "src"); 
Bitmap mIcon1 = null;
try {
mIcon1 =
BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
详情: 空气污染指数为16 我正在使用XP pro,SP3。 Android操作系统:果冻豆

以下是我的logcat错误:
正确。从Android 4.0(或者可能是4.1)开始,如果在主应用程序线程上执行网络I/O,则会自动失败。请将上述代码移动到后台线程,例如
异步任务

正确。从Android 4.0(或者可能是4.1)开始,如果在主应用程序线程上执行网络I/O,则会自动失败。请将上述代码移动到后台线程,如所述,在最新的API上,网络操作应在单独的线程中完成,否则将引发异常。以下是开发商网站上的一些示例:


如前所述,在最新的API上,网络操作应在单独的线程中完成,否则会引发异常。以下是开发商网站上的一些示例:


使用线程和处理程序在UI线程和其他线程之间轻松交换数据

//Handler to send commands to UI thread
    Handler handler = new Handler();

    Thread th = new Thread(new Runnable() {
        public void run() {

            URL url = null; 
            InputStream content = null;
            try { 
                url = new URL((data.get(position).getThumbnail())); 

                content = (InputStream)url.getContent();
                Drawable d = Drawable.createFromStream(content , "src");  
                final Bitmap mIcon1 = BitmapFactory.decodeStream(url.openConnection().getInputStream());; 

                handler.post(new Runnable() {

                    public void run() {
                        //here you can do everything in UI thread, like put the icon in a imageVew
                    }
                });

            } catch (Exception e) { 
                e.printStackTrace();
                handler.post(new Runnable() {

                    public void run() {
                        Toast.makeText(YourActivityName.this, e.getMessage(), Toast.LENGTH_LONG);
                    }
                });
            } 


        }
    });
    th.start();

使用线程和处理程序在UI线程和其他线程之间轻松交换数据

//Handler to send commands to UI thread
    Handler handler = new Handler();

    Thread th = new Thread(new Runnable() {
        public void run() {

            URL url = null; 
            InputStream content = null;
            try { 
                url = new URL((data.get(position).getThumbnail())); 

                content = (InputStream)url.getContent();
                Drawable d = Drawable.createFromStream(content , "src");  
                final Bitmap mIcon1 = BitmapFactory.decodeStream(url.openConnection().getInputStream());; 

                handler.post(new Runnable() {

                    public void run() {
                        //here you can do everything in UI thread, like put the icon in a imageVew
                    }
                });

            } catch (Exception e) { 
                e.printStackTrace();
                handler.post(new Runnable() {

                    public void run() {
                        Toast.makeText(YourActivityName.this, e.getMessage(), Toast.LENGTH_LONG);
                    }
                });
            } 


        }
    });
    th.start();

本以为是3.0以上,但还是+1。另外,Murphy先生在BBQ上的演讲很棒。我的代码在loadingTask类--new loadingTask().execute(“)下运行@EGHDK:可能吧,但我不记得在4.0之前听说过这件事。然后,我又一次几乎没有睡眠,所以我的大脑很模糊。谢谢你的好话!@user461844:那么这段代码不是从
doInBackground()调用的
--否则,您不会遇到此异常。下面是我的一些代码,这可能是问题所在吗?虽然它是3.0及以上版本,但仍然+1.P.s。Murphy先生在烧烤上谈得很好。我的代码在loadingTask类--new loadingTask().execute(“)下运行@可能吧,但我不记得在4.0之前听说过。再说一次,我几乎没有睡眠,所以我的大脑很模糊。谢谢你的好话@user461844:那么这段代码不是从
doInBackground()
调用的——否则,您不会得到这个异常。这是我的一些代码,这是问题所在吗?喜欢它胜过AsyncTask,尼斯:)喜欢它胜过AsyncTask,尼斯:)