2010-09-25 47 views
1

你好 在我的Android應用程序中打開我想獲得時間應用程序打開時至今。 最初我嘗試的是從服務器加載應用程序的時間,然後從設備中獲取與當前時間的差異。但通過這樣做,如果用戶更改時間,那麼我將不會獲得實際時間。 它不可能再次擊中服務器的相同。時間採用的是Android

有什麼辦法可以在android中實現這個嗎?

請分享您寶貴的建議。

感謝提前:)

回答

1

嘗試 「SystemClock」 級, 「uptimeMillis()」 方法。

。結果存儲在應用程序啓動時的變量。

+4

實際上你實際上需要SystemClock.elapsedRealtime()。對於大多數用途uptimeMillis()是正確的,但它實際上並不是真正的運行時間。 http://developer.android.com/reference/android/os/SystemClock.html – hackbod 2010-09-25 17:15:03

1

迴應我對於其他問題所說的話,首先需要熟悉活動生命週期並理解常用詞的新穎含義(幾乎毫無意義),例如Android應用程序生命中的「開放」和「開始」 。

沒有什麼辦法可以防止用戶更改系統時間 - 你只是沒有做到這一點對用戶的權利。通常情況下,這應該是一件罕見的事情,除非你做了一些讓他們想要的東西,比如在這麼多分鐘後將它們從應用程序的免費版本中鎖定出來。 (但是,如果手機在移動網絡上,大概移動網絡偶爾會調整時間來糾正設備振盪器中的錯誤或管理時間變化)

您可以做的是檢查每個入口點的系統時間到您的應用程序。如果它倒退了,那麼......事情正在發生。如果時鐘已經設置完畢,您可以假設在負時差之間沒有時間,並從那裏恢復您的時間表,至少保留您的記錄中以前使用的所有時間。

這可能是因爲有它,你可以查詢和關聯繫統時間CPU週期計數器,但是這可能是特定的高度和設備實際上可以復位。如果CPU頻率需求受到限制,它可能會變得很奇怪。

您可能能夠設置一個倒數計時器爲綁定的切入點在哪你可以計量的儘可能多的時間。我不知道這些系統時間變化是否可靠地工作 - 理想情況下他們會這樣做。測試或閱讀源將顯示。

0

使用elapsedRealtimeonCreate()店呢。更可靠。