2012-04-16 83 views
0

我目前有一個利用暫停,停止和onresume方法的敲擊遊戲,當用戶按下home鍵時,計時器被取消,剩下的時間保留很長時間,然後在onresume上創建一個新的計時器,剩下的時間 - 很好,但現在當計時器完成一次完整的運行並且用戶開始一個新的活動,例如排行榜/設置等等,並返回onResume會再次被觸發,剩餘1秒的倒數計時會再次開始,當某個活動或類似活動返回時,是否有辦法阻止它被觸發?從活動返回時難以恢復發射(難以解釋)

下面你會看到一個保險箱工作,我試圖徒勞地使用,非常混亂和有效,但即將用完的想法!

protected void onResume() { 
     super.onResume(); 

     if (timeLeft < 1000) { 

     } else { 
      if (timeLeft <= 0) { 

      } else { 

       if (newActivityOpened == true) { 

       } else { 
        if (isTimerRunning == true) { 
         startCountDownTimer(); 
        } 

       } 

      } 
     } 
    } 

打擾所有多餘的if語句,我不斷添加他們希望做點事哈哈。

+0

當你從其他的活動返回你想要的onCreate開火? – 5hssba 2012-04-16 17:44:29

回答

0

爲什麼不在活動中使用簡單的全局布爾值?每當你開始一些活動時將它設置爲true。在你的onResume()檢查布爾值。如果您將其設置爲true,則不要啓動倒數計時器。否則啓動它。

protected void onResume() { 
    if(!newActivityOpened){ 
     if (isTimerRunning) { 
      startCountDownTimer(); 
     } 
    } 
    super.onResume(); 
} 

不知道如果我得到正確的尿素問題,但這應該得到它的工作。

+0

這就是代碼中的'newActivityOpened',雖然它不能正常工作。 – Broak 2012-04-16 17:41:57

0

只需創建一個標誌,指示您當前是否正在計時/倒計時。一旦你開始你的計時器集timing = true;一旦它完成timing = false;

然後在你的onResume你知道你的計時器是否已經開始運行。

protected void onResume() { 
    if (timing) 
    { 
     // create your timer here 
    } 
    else{ 
     // do nothing? 
    } 
} 
1

當然,所有你需要做的是以下...

// Code where you start the new Activity... 
stopCountDownTimer(); 
if (timeLeft < 1000) 
    isTimerRunning = false; 
startActivity(intent); 

然後在onResume()你只是做...

if (isTimerRunning) 
    startCountDownTimer();