凌云志轩 2015-05-16 10:23 采纳率: 89%
浏览 2250
已采纳

android 定时器刚开始计时时有几秒延时

刚开始有大概2秒延时,怎么回事

 final TextView timeout = (TextView)grid.findViewById(R.id.timeout);
 final ImageButton tock_on = (ImageButton) grid.findViewById(R.id.tock_on);
  tock_on.setOnClickListener(new View.OnClickListener() {
                public void onClick(View arg0) {
 timeout.setText("00:00:00");
                            stepTimeHandler = new Handler();
                            startTime = System.currentTimeMillis();
                            mTicker = new Runnable() {
                            public void run() {
                                String content = showTimeCount(System.currentTimeMillis() - startTime);
                                timeout.setText(content);
                                long now = SystemClock.uptimeMillis();
                                long next = now + (1000 - now % 1000);
                                stepTimeHandler.postAtTime(mTicker, next);
                            }
                    };
                    //启动计时线程,定时更新
                    mTicker.run();
                                         }
            });
  • 写回答

1条回答

  • danielinbiti 2015-05-16 10:46
    关注

    第一次执行时间也就是new runnalbe和执行showtimecount的时间,应该不至于这么慢。不过如果是text偶尔跳动2秒是有可能的。先不说系统延时之类的。就从逻辑分析是有可能的

     stepTimeHandler = new Handler();
                                startTime = System.currentTimeMillis();
                                mTicker = new Runnable() {
                                public void run() {
                                    String content = showTimeCount(System.currentTimeMillis() - startTime);System.currentTimeMillis() 是999毫秒,相差不到1秒,显示应该还是00:00:00
                                    timeout.setText(content);
                                    long now = SystemClock.uptimeMillis();//这里比如SystemClock.uptimeMillis() 刚好过了当前秒了,是1秒001毫秒
                                    long next = now + (1000 - now % 1000);//到这里下次执行时间就是2秒的时候执行
                                    stepTimeHandler.postAtTime(mTicker, next);//再加上post延时,下次显示就是00:00:02了
                                }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法