[问题]为什么我的Handler的handleMessage次数变少了?
来源:互联网 发布:python 安装websocket 编辑:程序博客网 时间:2024/04/29 16:41
public Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { // Upon receiving the update pulse, we have the view perform a // update and then enqueue a new message to pulse at the desired // next time. case UPDATE_MSG: { update(); if (mUpdateFlag == false) { LogUtils.d(("end update 2")); stopUpdating(); } else { LogUtils.d("msg"); mHandler.sendMessageDelayed(mHandler.obtainMessage(UPDATE_MSG), UPDATE_DELAY); } break; } default: super.handleMessage(msg); } } };
/** * Start up the pulse to update the screen, clearing any existing pulse to * ensure that we don't have multiple pulses running at a time. */ void startUpdating() { LogUtils.d("start"); mStartFlag = true; mUpdateFlag = true; mHandler.removeMessages(UPDATE_MSG); mHandler.sendMessageDelayed(mHandler.obtainMessage(UPDATE_MSG), UPDATE_DELAY); } /** * Stop the pulse to fade the screen. */ void stopUpdating() { LogUtils.d("stop"); mHandler.removeMessages(UPDATE_MSG); }
public synchronized void update() { LogUtils.d("update 1 " + System.currentTimeMillis()); if (mCanvas != null) { LogUtils.d("update 2 " + System.currentTimeMillis()); int left = mRect.left; int top = mRect.top; int right = mRect.right; int bottom = mRect.bottom; if (left < 0) left = 0; if (top < 0) top = 0; if (right < 0) right = 0; if (bottom < 0) bottom = 0; if (mNewRegionFlag == true) { if (mEvent == 1) { LogUtils.d(TAG, ("end update 1\n")); mUpdateFlag = false; } } else { LogUtils.d(TAG, ("left=" + left + " top=" + top + " right=" + right + " bottom=" + bottom + "")); mCanvas.drawPath(mPath, mPaint); //绘制path if (mUpdateType == 0) if (Constants.TEST) invalidate(left, top, right, bottom, UPDATE_MODE_PARTIAL); else invalidate(left, top, right, bottom); else invalidate(left, top, right, bottom); mNewRegionFlag = true; } } }
onTouchEventswitch (event.getAction()) { case MotionEvent.ACTION_DOWN: LogUtils.d(TAG, ("touch down\n")); startUpdating(); breadk; case MotionEvent.ACTION_UP: LogUtils.d(TAG, ("touch up\n")); mUpdateFlag = false; break;
测试都是以画一个圈来测试log次数
现在是这样操作的,进来初始化该View,直接画线,结果打印如下
然后,我在此activity的基础上新建了一个空白的(清空画布,设置画布)
日志差不多少了一半,(测试多次)
但是总时间是一样的,误差不过50ms,中间的次数变少了,所以才有后者实时速度跟不上前者,update的脉冲没有实时跟上(类似游戏掉帧)。
不知道是什么原因导致的,是不是Handler机制
欢迎留言。。。。。。讨论
0 0
- [问题]为什么我的Handler的handleMessage次数变少了?
- 访问次数变少了?
- Handler的handleMessage()的线程调用问题
- Android-handler.post和handlemessage的使用对比(下载图片)
- Android * HandleMessage的模型
- Android * HandleMessage的模型
- 在Android 中,创建Handler 和继承Handler再重写handleMessage方法的区别是什么
- 为什么我的问题
- 多线程,主线程与子线程的通信Handler Message sendmessage与handlemessage obtainmessage
- 关于Eclipse New菜单(右击新建)选项变少的问题
- 资源的下载次数为什么会突然减少了???
- 为什么我的积分变成了负数
- ?为什么我的积分没有了?
- 为什么我的plugin不work了
- 我的Vim为什么不变色了
- 为什么我写的文章没了?
- 为什么我的博客发不了了
- test 我的文章为什么没有了
- PHP常用到的面试题
- 第7周项目3-负数把整数赶出队列
- redis学习笔记一
- Python基础视频学习笔记之(一)
- Leetcode 123. Best Time to Buy and Sell Stock III 股票买卖3 解题报告
- [问题]为什么我的Handler的handleMessage次数变少了?
- 短信验证码获取后的倒计时
- 第五周项目2 建立栈算法库
- 第七周 项目5:排队看病模拟
- logcat 命令行用法
- java jsp jstl标签 el表达式 个人记录
- json学习小白菜
- drawRect 什么时候调用?
- svn