我正在开发一个Android应用程序,我只是想知道什么时候没有调用函数。例如,假设您有函数
void foo()
{
...//do something here;
}
我想要做的是时间,如果没有调用函数,比如10秒,然后记录10秒后的时间。之后,如果调用该函数并调用它,我想记录它再次开始运行的时间。我在考虑使用Timer函数,但我不确定如何测试函数是否被调用。
我正在开发一个应用程序,您可以在其中查看某人是否开始或停止行走。例如,如果某人已停止行走10秒钟,我想记录该时间。当他们恢复行走时,我也想记录那段时间。希望这更有意义。任何帮助,将不胜感激!谢谢!
答案 0 :(得分:2)
一种可能的解决方案是在代码中添加一个布尔标志;也许称之为fooWasCalled
。将此变量初始化为false
并将其设置为true
内的foo()
。然后,当您需要知道函数是否被调用时,您可以简单地检查标志。
这是一个非常常见的习惯用语,用于检查是否发生了某些操作。
P.S。由于您使用的是Timer,因此您可能需要同步访问此布尔标志或使用其他一些线程安全机制。
答案 1 :(得分:0)
这可能是你想要的(不是完整的代码,只是想法)
protected boolean mIsCountDownOn;
private class CountDownTimer mCountDownTimer = new CountDownTimer(10000, 10000)
{
@Override
public void onTick(long millisUntilFinished)
{
}
@Override
public void onFinish()
{
mIsCountDownOn = false;
}
};
在foo
foo
{
if (mIsCountDownOn)
{
// less than 10 seconds since the last time foo is called
mCountDownTimer.cancel();
}
else
{
// more than 10 seconds since last call
mIsCountDownOn = true; // will start the timer at the end of foo body
// Code to save mTime to wherever you want to save it.
}
// Whatever else foo supposes to do
mTime = // get the time now
mCountDownTimer.start();
}