• 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();
    		}
        };
  • 相关阅读:
    Vue之axios基础使用
    Vue + Spring Boot 项目实战(二):使用 CLI 搭建 Vue.js 项目
    解决:'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    CentOS root用户修改只读文件时提示加! 解决办法
    CentOS 7 源码编译安装 Redis
    CentOS安装Jdk并配置环境变量
    Vue + Spring Boot 项目实战(一):项目简介
    druid 数据源 使用属性文件的一个坑
    scala 学习笔记(07) 一等公民的函数
    linux:手动校准系统时间和硬件CMOS时间
  • 原文地址:https://www.cnblogs.com/leischen/p/2989902.html
Copyright © 2020-2023  润新知