专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Android

秒表计时器,最小单位为毫秒,10毫秒,则画面显示反应缓慢,该如何解决

发布时间:2010-05-30 10:19:23 文章来源:www.iduyao.cn 采编人员:星星草
秒表计时器,最小单位为毫秒,10毫秒,则画面显示反应缓慢,该怎么解决?
我做了一个计时器,如果按秒,100毫秒为单位计时,则时间显示的很流畅。
如果改为10毫秒为单位,在模拟器上显示也很流畅,但安装到手机里后反应就缓慢了,有延迟,时间每次不是0.01秒的显示,而是中间有很大间隔
如果改为1毫秒为单位,在模拟器上显示都不流畅了,在手机上更不行了。
该怎么解决呢?
我的实现方法为:
1.设置计时器,时间间隔mlTimerUnit根据用户的设置设置不同的值
按秒计时,则为1000
按100毫秒计时,则为100
按10毫秒计时,则为10
按1毫秒计时,则为1

Java code
            if (null == timer) {
                if (null == task) {
                    task = new TimerTask() {
    
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            if (null == msg) {
                                msg = new Message();
                            } else {
                                msg = Message.obtain();
                            }
                            msg.what = 1;
                            handler.sendMessage(msg);
                        }
                        
                    };
                }
                
                timer = new Timer(true);
                timer.schedule(task, mlTimerUnit, mlTimerUnit); // set timer duration
            }


2.显示计时时间的方法
Java code
        // Handle timer message
        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                // TODO Auto-generated method stub
                switch(msg.what) {
                case 1:
                    mlCount++;
                    int totalSec = 0;
                    int yushu = 0;
                    
                    if (SETTING_SECOND_ID == settingTimerUnitFlg) {
                        // second
                        totalSec = (int)(mlCount);
                    } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) {
                        // 100 millisecond
                        totalSec = (int)(mlCount / 10);
                        yushu = (int)(mlCount % 10);
                    } else if (SETTING_10MILLISECOND_ID == settingTimerUnitFlg) {
                        // 10 millisecond
                        totalSec = (int)(mlCount / 100);
                        yushu = (int)(mlCount % 100);
                    } else if (SETTING_MILLISECOND_ID == settingTimerUnitFlg) {
                        // 1 millisecond
                        totalSec = (int)(mlCount / 1000);
                        yushu = (int)(mlCount % 1000);
                    }
                    
                    // Set time display
                    int min = (int)(totalSec / 60);
                    int sec = (int)(totalSec % 60);
                    try{
                        if (SETTING_SECOND_ID == settingTimerUnitFlg) {
                            // second(1000ms)
                            tvTime.setText(String.format("%1$02d:%2$02d", min, sec));
                        } else if (SETTING_100MILLISECOND_ID == settingTimerUnitFlg) {
                            // 100 millisecond
                            tvTime.setText(String.format("%1$02d:%2$02d:%3$d", min, sec, yushu));
                        } else if (SETTING_10MILLISECOND_ID == settingTimerUnitFlg) {
                            // 10 millisecond
                            tvTime.setText(String.format("%1$02d:%2$02d:%3$02d", min, sec, yushu));
                        } else if (SETTING_MILLISECOND_ID == settingTimerUnitFlg) {
                            // 1 millisecond
                            tvTime.setText(String.format("%1$02d:%2$02d:%3$03d", min, sec, yushu));
                        }
                    } catch(Exception e) {
                        tvTime.setText("" + min + ":" + sec + ":" + yushu);
                        e.printStackTrace();
                        Log.e("MyTimer onCreate", "Format string error.");
                    }
                    break;
                    
                default:
                    break;
                }
                
                super.handleMessage(msg);
            }
            
        };
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: