我正在開發一個測驗android應用程序,該應用程序使用顯示問題和答案的「問題」活動。在此活動中,有一個下一個按鈕將增加一個變量,問題ID,並將重新啓動相同的活動。重新啓動後,該活動將獲得該變量並顯示下一個問題。我的問題是,我需要在此活動上顯示一個計時器,但我需要它繼續甚至在重新開始活動之後倒計時。我正在考慮創建一個枚舉類,它將向我發送倒計時值甚至全局計時器。有什麼建議麼??即使在重新啓動活動後仍在活動中保留相同的倒數計時器
0
A
回答
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
相關問題
- 1. 活動重新啓動但計時器未重新啓動
- 2. 如何在重新啓動後立即啓動鎖屏活動?
- 3. 如果我重新開始活動,如何重新啓動倒數計時器?
- 4. 在Firebase中保存數據後活動重新啓動
- 5. 使用FLAG_ACTIVITY_CLEAR_TOP啓動活動時活動仍在後退堆棧中| FLAG_ACTIVITY_SINGLE_TOP
- 6. 在不同的活動中捕捉倒數計時器
- 7. 如何重新啓動主要活動,同時保留一些數據
- 8. 保留在活動
- 9. 獲取活動重新啓動時舊活動的數據
- 10. 當移動到活動時自動啓動倒計時
- 11. Android清除活動堆棧並在啓動器中保留活動
- 12. 在活動中重新啓動片段
- 13. 在android中重新啓動活動
- 14. 在c#中重新啓動Android活動
- 15. 倒計時器重新啓動一次開始另一個活動
- 16. 使用TabLayout進行的活動在新活動啓動後保存狀態
- 17. 使用相同的ObjectReference重新啓動Android活動
- 18. 倒數計時器插件重新啓動頁面刷新後
- 19. 如何在重新啓動後通過服務啓動活動
- 20. 計時器在活動關閉並重新啓動後不會停止
- 21. Android倒數計時器,繼續定時器上的新活動
- 22. 不想在BroadcastReceiver中保留啓動器活動
- 23. 即使在活動之間切換後,仍然保留附加的TextViews
- 24. 我想在同一活動中停止後重新啓動相機源碼
- 25. 重新啓動活動嗎?
- 26. 重新啓動活動Android
- 27. Android活動重新啓動
- 28. 在活動重新啓動時沒有保留網格視圖狀態
- 29. 重新加載後在狀態中保留用戶活動
- 30. 在不重新啓動活動的情況下恢復活動
您可以添加倒數計時器值'SharedPreferences' –