0

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

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

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

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

4

2 回答 2

2

一种可能的解决方案是在代码中添加一个布尔标志;也许叫它fooWasCalled。将此变量初始化false并设置为trueinside foo()。然后,当您需要知道该函数是否被调用时,您可以简单地检查标志。

这是一个非常常见的习惯用法,用于检查是否发生了某些操作。

ps 由于您使用的是计时器,因此您可能需要同步访问此布尔标志或使用其他一些线程安全机制。

于 2013-03-02T21:49:37.920 回答
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
{

    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();
}
于 2013-03-03T01:19:04.527 回答