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

  • 相关阅读:
    求助
    第五次作业
    第四次作业
    第三次作业
    第二次作业(四则运算)
    关于软件工程相关疑问
    小组成员名单()
    第四次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/ccdc/p/3836935.html
Copyright © 2011-2022 走看看