Handler消息处理机制(一)
来源:互联网 发布:veket linux安卓 编辑:程序博客网 时间:2024/06/05 01:51
Handler消息处理机制(一)
消息处理思想流程:
如获得了服务器的数据,要让界面改变显示数据
但是 要改变界面必须得在主线程中完成,而主线程不能实现耗时操作(网络请求是耗时操作)
所以 要在子线程中完成网络请求 再把消息传给主线程 让主线程去更改界面
消息处理方法流程:
在主线程创建Handler对象 并重写handelMessage()方法
创建子线程,在子线程中调用sentMessage()方法,该消息会存于MessageQueue消息队列中, 通过Looper对象取出MessageQueue中的一条消息,再给回Handler去调用handlerMessage()
消息处理具体方法使用:
1 在主线程创建Handler对象,重写handlerMessage方法
HandlerMessage会根据子线程发送消息而再去调用
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: { // 主线程收到子线程传来的消息调用此方法 进行UI更新 Log.i("dialogNumbers", String.valueOf(dialogNumbers)); questionBody.setText(getAQData.questionArray.get(dialogNumbers)); setProgress(); break; } } }};
2 创建子线程:(在需要通知主线程的地方 进行消息的发送
Handler.sentEmptyMessage(0) 0是标识 让主线程根据不同的标识进行不同的操作)
private void setProgress() { new Thread(new Runnable() { @Override public void run() { currentprogress = 0; // 设置初始值为0 while (currentprogress <= progressBar.getMax()) { //设置循环5次 if (currentprogress == 0) { currentprogress++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } else { progressBar.setProgress(currentprogress); currentprogress++;//设置每1S进度加1 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } // 进度完成时跳转下一页 dialogNumbers++; // 重置进度 progressBar.setProgress(0); // 发送消息给主线程 通知它去更新UI 这里的0为标识 可以让主线程根据不同的标识进行不同的操作 handler.sendEmptyMessage(0); } }).start();}
要传值:
Message message=new Message();Bundle bundle=new Bundle();bundle.putString("values",values);message.setData(bundle);myHandler.sendMessage(message);//发送message信息message.what=3;String xiabiaoString= msg.getData().getString("values");
问题:
会有内存泄漏的可能?
阅读全文
0 0
- Handler消息处理机制(一)
- Android 中消息处理机制-Looper、Handler、Thread(一)
- Android 中消息处理机制-Looper、Handler、Thread(一)
- Android系统Handler消息处理机制(一)
- Handler消息处理机制
- Handler消息处理机制
- handler消息处理机制
- handler消息处理机制
- Handler消息处理机制
- Handler消息处理机制
- Handler--消息处理机制
- Handler消息处理机制
- Handler消息处理机制
- handler消息处理机制
- Handler消息处理机制
- handler 消息处理机制
- Handler消息处理机制
- 解析异步消息处理机制(Handler)
- SPFA(shorter path fast algorithm)
- C语音exern引用同一个文件中的变量
- 关于table中td中文字换行以及不换行,以及div中文字不换行
- 多线程计算1到100的求和
- OpenCV_提取直线、轮廓和区域
- Handler消息处理机制(一)
- 脚本
- 安卓布局 viewpager+tablelayout+fragment
- python main()函数
- 阶梯Nim 与【JZOJ 5500】 营养餐
- opencv读取图像,并获得像素值,图像高度和宽度不是4的倍数
- word应用
- Processing relative path 相对路径
- MVP框架 简单使用