zoukankan      html  css  js  c++  java
  • android 开发笔记

    1、异常:android.os.NetworkOnMainThreadException

    在android2.3之后 在主线程中必须使用另一个线程 如handler机制,或者异步任务获取网络数据

    如果你访问网络的操作 必须放在主线程中执行,那么 在oncreate()中添加:

    public void onCreate(Bundle savedInstanceState) {
            
            // 详见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());
            
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            InitDialog();
    }

    这样,高版本中也可以在主线程中执行网络操作了,或者是再启动线程去执行网络操作:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.share_mblog_view);
        new Thread(runnable).start();
    }
     
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bundle data = msg.getData();
            String val = data.getString("value");
            Log.i("mylog","请求结果-->" + val);
        }
    }
     
    Runnable runnable = new Runnable(){
        @Override
        public void run() {
            //
            // TODO: http request.
            //
            Message msg = new Message();
            Bundle data = new Bundle();
            data.putString("value","请求结果");
            msg.setData(data);
            handler.sendMessage(msg);
        }
    }

    扩展:Handler主要接受子线程发送的数据, 并用此数据配合主线程更新UI,参考http://www.pin5i.com/showtopic-android-handler.html

    多线程参考:http://www.cnblogs.com/ccdc/p/3836966.html

  • 相关阅读:
    mybatis0206 延迟加载
    怎样关闭“粘滞键”?
    TNS-12557: TNS:protocol adapter not loadable TNS-12560: TNS:protocol adapter error
    HTTP协议头部与Keep-Alive模式详解
    oracle定时器执行一遍就不执行或本就不执行
    Inflation System Properties
    https://stackoverflow.com/questions/16130292/java-lang-outofmemoryerror-permgen-space-java-reflection
    java spring中对properties属性文件加密及其解密
    annotation配置springMVC的方法了事务不起作用
    SQLPlus在连接时通常有四种方式
  • 原文地址:https://www.cnblogs.com/ccdc/p/3836935.html
Copyright © 2011-2022 走看看