如何查找函数是否未被调用?

时间:2013-03-02 21:45:34

标签: android timer

我正在开发一个Android应用程序,我只是想知道什么时候没有调用函数。例如,假设您有函数

void foo()
{
 ...//do something here;
}

我想要做的是时间,如果没有调用函数,比如10秒,然后记录10秒后的时间。之后,如果调用该函数并调用它,我想记录它再次开始运行的时间。我在考虑使用Timer函数,但我不确定如何测试函数是否被调用。

我正在开发一个应用程序,您可以在其中查看某人是否开始或停止行走。例如,如果某人已停止行走10秒钟,我想记录该时间。当他们恢复行走时,我也想记录那段时间。希望这更有意义。任何帮助,将不胜感激!谢谢!

2 个答案:

答案 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();
}