zoukankan      html  css  js  c++  java
  • 关于android主线程异常NetworkOnMainThread不能訪问网络

    今天在学习的过程中遇到了NetworkOnMainThread的异常,关于这个异常问题在android sdk 4.0版本号上,这个问题可能比較常见,查了许些资料大多都是大概解说原因,可是没有解说到详细的解决方法。以下将我写的程序的时候的解决方法记录例如以下:

    首先看看LogCat的异常信息:


    异常的原因:在android3.0版本号開始就强制不能在主线程中訪问网络。要把訪问网络放在独立的线程中。在开发中。为了防止訪问网络堵塞主线程。一般都要把訪问网络放在独立线程中或者异步线程AsyncTask中

    也就是说解决NetworkOnMainThread异常有两种方案:

    第一种:又一次开一个线程。

    另外一种:忽略这些强制策略

    而在我是在学习的过程中,没有那么限制须要考虑就採用了另外一种解决方式,忽略这些强制策略问题。要忽略策略问题可以在onCreate()方法里面加上

    StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    同事在类的上面加上@SuppressLint("NewApi"),这样问题就攻克了,程序也能够顺利通过运行。

    在上面解决方式中提到了StrictMode类,这个类是在android sdk 2.3以上才有StrictMode类。讲到这里那么我来简要说明下StrictMode类:

    StrictMode类是在Android 2.3提供一个称为严苛模式(StrictMode)的调试特性。那它都做什么呢?它将报告与线程及虚拟机相关的策略违例。一旦检測到策略违例(policy violation),你将获得警告。其包括了一个栈trace显示你的应用在何处发生违例。能够强制用警告取代崩溃(crash),也能够仅将警告计入日志,让你的应用继续运行,就像我的程序解决方式就是强制忽略策略,强制运行。


  • 相关阅读:
    BZOJ 4245: [ONTAK2015]OR-XOR
    BZOJ 2535: [Noi2010]Plane 航空管制2
    COGS 2551. 新型武器
    cogs2550. 冰桥,升起来了!
    大数模板
    uva 1513(线段树)
    uva 11525(线段树)
    poj 3368(RMQ模板)
    hdu 4686 Arc of Dream(矩阵快速幂)
    poj 3321 Apple Tree(树状数组)
  • 原文地址:https://www.cnblogs.com/llguanli/p/8340526.html
Copyright © 2011-2022 走看看