2013-03-02 66 views
0

我正在使用Android應用程序,我只想知道函數何時未被調用。例如,假設你具備的功能如何查找函數是否未被調用?

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

我想要做的是,如果該功能尚未要求時間讓說,10秒,然後記錄一次,10秒後。之後,如果函數被調用並被調用,我想記錄函數再次開始的時間。我正在考慮使用Timer函數,但我不確定如何測試函數是否被調用。

我正在研究一個應用程序,您可以看到一個人是否開始或停止步行。例如,如果有人已經停止了10秒鐘,我想記錄那個時間。當他們恢復步行時,我也想記錄那個時間。希望這更好理解。任何幫助,將不勝感激!謝謝!

回答

2

一個可能的解決方案是向您的代碼添加一個布爾標誌;也許稱它爲fooWasCalled。將此變量初始化爲false並將其設置爲true,內部爲foo()。然後,您可以在需要知道該功能是否被調用時簡單地檢查該標誌。

這是一個非常常見的習語來檢查是否發生了某些操作。

p.s.由於您使用的是定時器,因此您可能需要同步對此布爾標誌的訪問或使用其他一些線程安全機制。

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