我计划使用计时器创建间隔应用程序。它应该只是最基础的,所以在我理解了基础知识之后,我将不得不添加更多内容。我要实现的是选择一个间隔应持续的分钟数,但该间隔应持续多少次。就像持续1分钟并持续8次的间隔。问题是最好使用哪个计时器?我在Android
Countdown Timer上尝试过它,它似乎可以正常工作。但是还有另一个更好的吗?
我总是建议使用Handler
。
它比内置类要花更多的工作,但是我发现它的效率要高得多,您可以更好地控制它。
Handler是一个类,它将在特定的Looper
/
Thread
默认情况下(在其创建的Thread上)处理代码执行,否则,您可以通过将传递Looper
给Handler
构造函数来指定Handler在何处执行其代码,例如-new Handler(Looper.getMainLooper());
我之所以推荐循环程序,是因为您具有更高的控制灵活性,因为它比TimerTask
方法的抽象度略低。
通常,它们对于跨线程执行代码非常有用。例如对于跨线程管道数据很有用。
两个主要用途是:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
final Handler h = new Handler();
h.postDelayed(new Runnable()
{
private long time = 0;
@Override
public void run()
{
// do stuff then
// can call h again after work!
time += 1000;
Log.d("TimerExample", "Going for... " + time);
h.postDelayed(this, 1000);
}
}, 1000); // 1 second delay (takes millis)
}
使用简单!
或者,您可以使用消息来减少对象的创建。如果您正在考虑高速更新UI等-这将减轻垃圾收集器的压力。
class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MyTimers timer = new MyTimers();
timer.sendEmptyMessage(MyTimers.TIMER_1);
timer.sendEmptyMessage(MyTimers.TIMER_2);
}
public static class MyTimers extends Handler
{
public static final int TIMER_1 = 0;
public static final int TIMER_2 = 1;
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case TIMER_1:
// Do something etc.
Log.d("TimerExample", "Timer 1");
sendEmptyMessageDelayed(TIMER_1, 1000);
break;
case TIMER_2:
// Do another time update etc..
Log.d("TimerExample", "Timer 2");
sendEmptyMessageDelayed(TIMER_2, 1000);
break;
default:
removeMessages(TIMER_1);
removeMessages(TIMER_2);
break;
}
}
}
}
显然,这 不是 一个完整的实现,但它应该为您提供一个良好的开端。
本文向大家介绍详解C# TimeSpan 计算时间差(时间间隔),包括了详解C# TimeSpan 计算时间差(时间间隔)的使用技巧和注意事项,需要的朋友参考一下 TimeSpan 结构 表示一个时间间隔。 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 说明: 1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月3
# interval(date) Alias for interval.floor(date). For example, d3.time.day(new Date()) returns midnight (12:00 AM) on the current day, in local time. # interval.floor(date) Rounds down the specified da
我有两个XML EditTexts。在一个EditText中,用户可以将一个数字作为分钟,在另一个EditText中,可以将一个数字作为秒。单击finish按钮后,seconds EditText应开始倒计时,并每秒更新其文本。 此外,我如何保持更新,直到它达到零分钟零秒?
问题内容: 时间间隔后如何调用方法?例如,如果要在2秒钟后在屏幕上打印声明,其程序是什么? 问题答案: 答案是一起使用javax.swing.Timer和java.util.Timer: 显然,仅使用java.util.Timer可以达到2秒的打印间隔,但是如果要在一次打印后停止打印,那将很难。 另外,请勿在代码中混用线程,而无需线程即可! 希望这会有所帮助!
我偶然发现了这个不错的教程https://github.com/manashmndl/DeadSimpleSpeechRecognizer其中数据是基于由文件夹分隔的样本进行训练的,所有mfcc都是一次计算的。 我正试图以不同的方式实现类似的目标。 基于此:https://librosa.github.io/librosa/generated/librosa.feature.mfcc.html l