android.os.NetworkOnMainThreadException异常(转载)

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

// 详见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()  //探测SQLite数据库操作
        .detectLeakedClosableObjects()  
        .penaltyLog()  //打印logcat
        .penaltyDeath()  
        .build());  

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

    public void onCreate(Bundle savedInstanceState) {

      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();  
}  
  };  

相关推荐