2016-02-19 63 views
0

Calendar.getInstance()其中一個構造函數接受TimeZoneLocale,並且TimeZoneLocale都有一個setDefault()函數,它是一個同步方法。您是否只需要爲TimeZone和Locale調用setDefault()一次?

在Android的上下文中,這是否意味着我只需要在Activity onCreate()上調用一次?如果我這樣做,如果活動暫停並恢復,該怎麼辦?或者,我可以在我的自定義應用程序類onCreate()上調用這些setDefault(),以忘記Android生命週期如何影響我的日曆的價值?

最重要的是,在Android中使用setDefault()的最佳做法是什麼?

+1

最佳做法是不要打電話給他們。他們默認爲電話設置,這意味着用戶的偏好,所以你爲什麼要改變他們的東西? – Andreas

+0

@Andreas根據TimeZone.class中的doc,你的陳述是不準確的:'只覆蓋當前進程的默認時區。 param timeZone自定義時區,或{code null}將默認值設置爲用戶的首選值。「 –

+0

這是怎麼說我錯了?我說'TimeZone'和'Locale'的默認值已經從手機的設置中設置好了,也就是用戶的喜好。你的引用並不矛盾。它只定義瞭如果你打電話給他們會發生什麼事,而我只是在談論他們根本不打電話給他們。 – Andreas

回答

1

雖然我必須重申@Andreas的觀點,你真的不應該這樣做;如果必須的話,那麼在整個過程中調用它們就足夠了,因爲它們存儲在static字段中。

如果您有應用程序的子類,則應該足以覆蓋Application.onCreate()並在那裏設置值。

如果您擔心只有一組本地化字符串,更好的建議是將所有翻譯的字符串放入默認的values目錄(通常用於en字符串,但如果它是您唯一的翻譯,則此是最好的方法)。這樣,用戶所在的區域設置就沒有關係,他們只會看到這組字符串。

+0

說服我夠了,謝謝! –

相關問題