2015-07-20 22 views
0

我正在開發一個測驗android應用程序,該應用程序使用顯示問題和答案的「問題」活動。在此活動中,有一個下一個按鈕將增加一個變量,問題ID,並將重新啓動相同的活動。重新啓動後,該活動將獲得該變量並顯示下一個問題。我的問題是,我需要在此活動上顯示一個計時器,但我需要它繼續甚至在重新開始活動之後倒計時。我正在考慮創建一個枚舉類,它將向我發送倒計時值甚至全局計時器。有什麼建議麼??即使在重新啓動活動後仍在活動中保留相同的倒數計時器

+0

您可以添加倒數計時器值'SharedPreferences' –

回答

1

不要重新啓動您的活動,只需更新其中的內容。

如果你在重新啓動它設置,你可以做到以下幾點:(以最好到最差的順序排列):

  • 供應開始時間的意圖,當你重新啓動它。
  • 創建一個包含時間和時間功能的單例。
  • 使時間靜止。
1

您可以使用手機上的當前時間。當您啓動計時器時,將當前時間存儲在共享首選項中。活動重新啓動後,您可以檢索此值並將其與新當前時間進行比較。

這種方式你不必有一個積極的倒計時器。缺點是用戶可以通過改變手機上的時間來「欺騙」!要做到這一點

0

一種方法是倒計時存儲在SharedPreferences對象,但是這已經不是非常模塊化的缺點,因爲這樣你就不能保證沒有其它程序的所有部分都可以訪問該SharedPreferences對象類不會以某種方式混淆倒數計時器的值。

更模塊化的方法是將倒數值存儲在您用來啓動新活動的意圖中。例如:

// To save the data when you start the new activity 
Intent newQuestionIntent = new Intent(getApplicationContext(), MyQuizQuestion.class); 
newQuestionIntent.putExtra("question_id", myQuestionId); 
newQuestionIntent.putExtra("countdown_value", myCountdownTimerValue); 
startActivity(newQuestionIntent); 


// To restore the data in your new activity 
@Override 
protected void onCreate() { 
    Bundle savedData = getIntent().getExtras(); 
    if (savedData.containsKey("question_id")) { 
     myQuestionId = savedData.getInt("question_id"); 
    } 

    if (savedData.containsKey("countdown_value")) { 
     myCountdownTimerValue = savedData.getInt("countdown_value"); 
    } 
} 
+0

共享偏好的另一個缺點是,你創建一個全新的文件,並在第一次訪問,你會得到一個StrictMode衝突(有機會一起的應用程序掛起由於存儲被佔用)除非你把訪問權限放在後臺線程中。 – JohanShogun

相關問題