SLaks 2013-08-09 08:33 采纳率: 0%
浏览 2186

从activity中下载文件的错误

我使用http连接从web站点下载一个图像,如果下载是在服务器中执行就没有问题,如果我在一个activity中使用相同的方法下载文件就有下面的错误:

08-08 13:27:36.800: W/System.err(8010): android.os.NetworkOnMainThreadException
08-08 13:27:36.800: W/System.err(8010):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
08-08 13:27:36.800: W/System.err(8010):     at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
08-08 13:27:36.800: W/System.err(8010):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
08-08 13:27:36.800: W/System.err(8010):     at java.net.InetAddress.getAllByName(InetAddress.java:249)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:69)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1038)
08-08 13:27:36.800: W/System.err(8010):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:481)
08-08 13:27:36.800: W/System.err(8010):     at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:572)
08-08 13:27:36.800: W/System.err(8010):     at java.net.URLConnection.getContentLength(URLConnection.java:335)

我用的下面的方法调用下载方法:

new Thread(new Runnable() {
        public void run() {
             downloadFile(imagePath);
                }
              }).start();
  • 写回答

1条回答

  • JaveZh 2013-08-09 08:50
    关注

    运行在主线程里了,用:

    new Thread(){
        @Override
        public void run(){
            //你要执行的方法
            //执行完毕后给handler发送一个空消息
            handler.sendEmptyMessage(0);
        }
    }.start();
    
    
    //定义Handler对象
    private Handler handler =new Handler(){
        @Override
        //当有消息发送出来的时候就执行Handler的这个方法
        public void handleMessage(Message msg){
        super.handleMessage(msg);
        //处理UI
        }
    };
    
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法