草庐IT

多线程(初阶八:计时器Timer)

目录一、标准库中的计时器1、计时器的概念2、计时器的简单介绍二、模拟实现一个计时器1、思路(1)计数器中要存放任务的数据结构(2)存放优先级队列中的类型:自定义任务类MyTimerTask(3)计数器类MyTimerMyTimer类:MyTimerTask任务类:2、分析计时器的线程安全问题(1)维护队列进出的操作(2)当队列是空的,就要阻塞等待(3)如果没到时间,就要等待到时在执行要执行的代码一、标准库中的计时器1、计时器的概念计时器类似闹钟,有定时的功能,闹钟是到时间就会响,而计时器是到时间就会执行某一操作,可以指定时间,去执行某一任务(某一代码)。2、计时器的简单介绍在标准库中,提供了T

Android postDelayed方法可靠性

我正在使用android.os.Handler的“postDelayed”方法打开和关闭继电器。有2个可运行的-一个用于发送ON命令,另一个用于发送OFF命令。继电器需要保持固定ms并再次关闭固定ms。我提到了这个旧的android帖子http://android-developers.blogspot.in/2007/11/stitch-in-time.html向中继发送重复命令启动命令需要从不同的设备同时发送——每个连接到不同的继电器。所以效果应该是所有的继电器应该同时打开。我确保命令从每台设备同时发送,在所有设备上使用GPS时间同步。一旦所有设备都同步了GPS时间,我第一次在秒开

android - Android 设备上的 Boost Asio deadline_timer 不会在到期时间触发,而是在稍后的时间触发

我们正在尝试在Android设备上使用boostasiodeadline_timers。我们有一个要求,我们需要每100毫秒触发一个定时器。我使用了如下代码。但是,计时器似乎每1秒触发一次。我们应该在Android系统中进行哪些微调才能使boostasio截止时间计时器按预期工作?注意:以下代码在普通linux系统上按预期工作。是什么让它在Andorid系统上的工作方式不同?代码:voidprint(asio::deadline_timer*ptimer,constasio::error_code&err){structtimevaltval;if(0==gettimeofday(&t

android - 在Android中删除帧动画的背景

如何删除帧动画的背景(或将其设置为透明)?当我在xml布局文件中设置背景颜色为透明时,运行时它变成了黑色。当我setBackgroundColor(0);在Java代码中,我得到以下异常:java.lang.ClassCastException:android.graphics.drawable.ColorDrawable无法转换为android.graphics.drawable.AnimationDrawable/res/layout/dialog_loading.xml/res/anim/frame_animation.xmlJava代码:@OverridepublicViewo

android - onFinish() CountDownTimer 方法太长?

更新:2013年11月20日:此问题仍未解决。我正在制作一个CountDownTimer并且在onFinish()方法中,我显然做了太多的工作,因为最后一秒和完成之间的延迟时间比1秒(这是我的滴答之间的延迟)。这是我的代码。mCountDownTimer=newCountDownTimer(GAME_LENGTH,1000){publicvoidonTick(longmillisUntilFinished){mCountDownTextView.setText(""+millisUntilFinished/1000);}publicvoidonFinish(){mCountDownTe

java - Android:定时器/延迟替代

我想让一张图片可见60毫秒,然后不可见,然后我想让另一张图片做同样的事情......等等。我认为我没有正确使用定时器......因为当我运行该应用程序时,两个图像同时打开并且在我按下使用此功能的按钮时不会消失。这是一些示例代码..timer.schedule(newTimerTask(){@Overridepublicvoidrun(){LED_1.setVisibility(View.VISIBLE);//LED_1isanImageView}},60);LED_1.setVisibility(View.INVISIBLE);timer2.schedule(newTimerTask(

java - 倒数计时器延迟 - Android

我正在制作一个国际象棋时钟,但在其中我需要一个延迟(就像它在计数之前等待10秒)。我为此使用了处理程序,但如果在10秒内单击按钮,则什么也不会发生。请帮忙!谢谢!我的代码:mHandler.postDelayed(newRunnable(){publicvoidrun(){//countdowntimerstarttimer2=newCountDownTimer(totalSeconds,Integer.parseInt(delay.getText().toString())){publicvoidonTick(longmillisUntilFinished){secondsTimer

java - 精确一秒间隔的最佳计时器技术是什么?

我正在为一项专门的户外运动编写一个简单的计时应用程序。该应用程序每秒执行一系列计算,并显示用户感兴趣的信息。耗时是计算结果准确性的关键。理想情况下,计算和结果将精确地每秒更新一次。我尝试使用计时器或计时器小部件来控制更新间隔:是否有更准确的方法来确定间隔?有没有一种技术可以给我几乎精确的一秒间隔?下面的代码并不完整-只是为了展示我正在使用的时间和计时器的类型-它们运行良好,只是不够精确。importjava.util.Timer;importjava.util.TimerTask;...myTimer=newTimer();myTimer.schedule(newTimerTask()

android - 即使用户没有使用我的应用程序也更新 TextView

我基本上想创建一个计时器。我有一个TextView,我需要在其中显示一个计时器,例如“在2分29秒内更新您的位置”,我希望计时器递减,例如2分28秒,然后是2分27秒。即使用户没有使用我的应用程序,我也想更新它(我不希望它在真正意义上更新,我的意思是当用户在说1分钟后打开我的应用程序时,计时器应该显示1分27秒).有人可以帮我指出正确有效的方法吗?谢谢:) 最佳答案 我认为最有效的方法是使用scheduleAtFixedRate当您的Activity处于前台并且当它进入后台时您不需要任何服务您只需将当前时间和剩余时间保存在共享首选项

android - 在 Android 中使用 CountDown Timer 或基于 Handler 自己滚动

这篇文章:http://android-developers.blogspot.co.uk/2007/11/stitch-in-time.html描述了如何使用Handler实现定时器。我可以使用CountDown计时器实现相同的目的:http://developer.android.com/reference/android/os/CountDownTimer.html这将在前台服务中运行,该服务正在播放音乐,以便在指定时间段后停止播放音乐(想想音乐椅)。屏幕锁定时的时间需要可靠,我认为在前台服务中运行它应该确保这一点,是这样吗?我从这个帖子知道:WhydoesCountDownTi