zoukankan      html  css  js  c++  java
  • 【Android笔记】不能在主线程中进行网络操作

    在网上看到,自己以前也曾经遇到:

    1 04-26 14:36:14.663: E/AndroidRuntime(10368): android.os.NetworkOnMainThreadException
    2 04-26 14:36:14.663: E/AndroidRuntime(10368):         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    3 但是我在manifest里配置了<uses-permission android:name="android.permission.INTERNET"/>

    造成这样的错误原因是代码不符合Android规范,意思是主线程里网络操作异常。

    一般耗时操作都不允许放在主线程里直接操作,如网络操作等,

    一般需要开一个子线程去访问网络,然后通过handler去更新界面。

    当然,硬是要这样测试操作也是可以的,参考增加以下代码:

     1 @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
     4         .detectDiskReads()
     5         .detectDiskWrites()
     6         .detectNetwork()   // or .detectAll() for all detectable problems                      
     7         .penaltyLog()                      
     8         .build());              
     9         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
    10         .detectLeakedSqlLiteObjects() //探测SQLite数据库操作              
    11         .penaltyLog() //打印logcat              
    12         .penaltyDeath()              
    13         .build()); 
    14         super.onCreate(savedInstanceState);
    15         setContentView(R.layout.activity_main);

    参考原文:http://www.apkbus.com/android-114524-1-1.html

  • 相关阅读:
    jqGrid jqGrid 参数
    jqgrid问题总结
    quartz的配置表达式
    Struts2接收参数的几种方式
    Perl爬虫代码
    PHP官方的PECL扩展有问题
    Perl单URL爬虫
    Perl 多进程进度条
    Perl Tk摸索
    hdu 2058 数学题
  • 原文地址:https://www.cnblogs.com/tanghuian/p/4594996.html
Copyright © 2011-2022 走看看