zoukankan      html  css  js  c++  java
  • android.os.NetworkOnMainThreadException

    在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进行,有两个方法可以解决,一个是在主程序中增加:

    Java代码 复制代码 收藏代码
    1. // 详见StrictMode文档 
    2. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
    3.         .detectDiskReads() 
    4.         .detectDiskWrites() 
    5.         .detectNetwork()   // or .detectAll() for all detectable problems 
    6.         .penaltyLog() 
    7.         .build()); 
    8. StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 
    9.         .detectLeakedSqlLiteObjects() 
    10.         .detectLeakedClosableObjects() 
    11.         .penaltyLog() 
    12.         .penaltyDeath() 
    13.         .build()); 
            // 详见StrictMode文档
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectDiskReads()
                    .detectDiskWrites()
                    .detectNetwork()   // or .detectAll() for all detectable problems
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());

    另一种是启动线程执行下载任务:

           public void onCreate(Bundle savedInstanceState) {

    Java代码 复制代码 收藏代码
    1.       super.onCreate(savedInstanceState); 
    2.       setContentView(R.layout.main); 
    3.       // 启动线程执行下载任务 
    4.       new Thread(downloadRun).start(); 
    5.   } 
    6.    
    7.   /**
    8.    * 下载线程
    9.    */ 
    10.   Runnable downloadRun = new Runnable(){ 
    11.  
    12. @Override 
    13. publicvoid run() { 
    14.     // TODO Auto-generated method stub 
    15.     updateListView(); 
    16.   }; 
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            // 启动线程执行下载任务
            new Thread(downloadRun).start();
        }
        
        /**
         * 下载线程
         */
        Runnable downloadRun = new Runnable(){
    
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
    			updateListView();
    		}
        };
  • 相关阅读:
    【JMeter】JMeter使用plugins插件进行服务器性能监控
    【Python】不定期更新学习小问题整理
    【Python】linux安装tornado
    【Python】使用python的tornado配合html页面示例
    pip Fatal error in launcher: Unable to create process using '""'
    利用Python处理向不受信任主机发送请求
    Jmeter(十三) JDBC Request
    Django测试环境环境配置
    python接口测试之mock(三)
    python接口测试之mock(二)
  • 原文地址:https://www.cnblogs.com/leischen/p/2989902.html
Copyright © 2011-2022 走看看