new Thread(new Runnable() {        @Override        public void run() {            /*            * handler使用步骤            *gei threadLocal设置了一个looper对象            * 在looper的构造方法中,创建了一个messageQueue对象            * */            Looper.prepare();            /*在构造方法中获取looper和looper中的messageQueue            *            * */            Handler handler=new Handler(){                @Override                public void handleMessage(Message msg) {                    super.handleMessage(msg);                }            };            /*奖message发送到messagequeue中,在messageQueue里面,所有的message都是时间为顺序从小到大排列            *            * */handler.sendEmptyMessage(0);/**顺序取出messageQueue中的message*并且执行message。target。dispatchMessage();其中的message。target就是发送这个消息的handler* 每一条消息都有一定的执行时间,handler会判断时间有没有到,如果没到时间会等待,* */Looper.loop();        }    }).start();


----------handler的使用------

通过Message与Handler进行通信的步骤是: 
1. 重写Handler的handleMessage方法,根据Message的what值进行不同的处理操作 
2. 创建Message对象 
虽然Message的构造函数式public的,我们还可以通过Message.obtain()或Handler.obtainMessage()来获得一个Message对象(Handler.obtainMessage()内部其实调用了Message.obtain())。 
3. 设置Message的what值 
Message.what是我们自定义的一个Message的识别码,以便于在Handler的handleMessage方法中根据what识别出不同的Message,以便我们做出不同的处理操作。 
4. 设置Message的所携带的数据,简单数据可以通过两个int类型的field arg1和arg2来赋值,并可以在handleMessage中读取。 
5. 如果Message需要携带复杂的数据,那么可以设置Message的obj字段,obj是Object类型,可以赋予任意类型的数据。或者可以通过调用Message的setData方法赋值Bundle类型的数据,可以通过getData方法获取该Bundle数据。 
6. 我们通过Handler.sendMessage(Message)方法将Message传入Handler中让其在handleMessage中对其进行处理。 

需要说明的是,如果在handleMessage中 不需要判断Message类型,那么就无须设置Message的what值;而且让Message携带数据也不是必须的,只有在需要的时候才需要让其携带数据;如果确实需要让Message携带数据,应该尽量使用arg1或arg2或两者,能用arg1和arg2解决的话就不要用obj,因为用arg1和arg2更高效。

Handler handler = new Handler(){    public void handleMessage(android.os.Message msg) {        switch (msg.what){            case 1:                String str= (String) msg.obj;                reponsedattx.setText(str);                break;        }    };};

//get同步请求---http://ddb.cn/api/VlianbaoCash/deposit    public void gettongbuDatasync(){        new Thread(new Runnable() {            @Override            public void run() {                OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象                Request request = new Request.Builder()                        .url(String.valueOf(test.getText()))//请求接口。如果需要传参拼接到接口后面。                        .build();//创建Request 对象                Response    response=null;                try {                     response = client.newCall(request).execute();//得到Response 对象                    Log.e("kwwl","get同步res=="+response.body().string());                  String resstr=response.body().string();                    Message msg=new Message();                    //虽然Message的构造函数式public的,我们也可以通过以下两种方式通过循环对象获取Message                    //msg = Message.obtain(uiHandler);                    //msg = uiHandler.obtainMessage();                    //what是我们自定义的一个Message的识别码,以便于在Handler的handleMessage方法中根据what识别                    //出不同的Message,以便我们做出不同的处理操作                    msg.what = 1;                    //我们可以通过arg1和arg2给Message传入简单的数据                    msg.arg2 = 321;                    msg.obj="jjjj";                    //我们也可以通过给obj赋值Object类型传递向Message传入任意数据                    //msg.obj = null;                    //我们还可以通过setData方法和getData方法向Message中写入和读取Bundle类型的数据                    //msg.setData(null);                    //Bundle data = msg.getData();                    //将该Message发送给对应的Handler                    handler.sendMessage(msg);                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }


-------回到主线程更新UI的四种方法,参考:https://blog.csdn.net/mislaydu/article/details/51776247



更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android知识点总结(十五) Android(安卓)MVP 简易模型
  5. android BLE 4.0 setCharacteristicNotification接收不到数据
  6. Android(安卓)自定义ContentProvider和ContentObserver的完整使
  7. 【Android(安卓)应用开发】 自定义组件 宽高适配方法, 手势监听
  8. Android在任意位置由Notification跳向指定fragment
  9. Android(安卓)对话框(Dialog)

随机推荐

  1. Android(安卓)断点续传,手写多线程下载文
  2. 应用程序如何获取系统权限
  3. Android获取SD卡总容量,可用大小,机身内存
  4. Unity与Android交互方案优化版
  5. Android(安卓)插件化
  6. Android绘图机制(二)--2D绘图基础
  7. Android——《Android第一行代码》10.6节
  8. Android平台上大长图(图片很大的那种)的加
  9. Android的简单应用(三)——为你的程序添加
  10. Android应用程序组件