2012-07-11 11 views
0

默認情況下,如果用戶在我的應用程序運行時更改其設備的顯示語言,則Android將銷燬並重新創建活動。它這樣做是爲了確保我的應用程序正確使用最新的設置。如果我的GLSurfaceView應用程序永遠不需要讀取Android設備的語言環境,我可以安全地忽略語言環境配置更改嗎?

我可以通過將locale添加到清單中的configChanges屬性來覆蓋此行爲。然後,當用戶更改語言時,我只會回撥至onConfigChanged()而不是完全重新啓動。然而,documentation說我應該「檢索所有資源」又說:

所有的這些配置的變化可能會影響應用程序看到的資源值。因此,當調用onConfigurationChanged()時,通常需要再次檢索所有資源(包括視圖佈局,drawable等)以正確處理更改。

我的問題是,這是真的對於語言環境的變化?如果我有一個假設的應用程序根本不使用用戶的語言設置,並且僅使用GLSurfaceView呈現圖形,那麼忽略此事件是否安全?如果是這樣,你可以用文檔來支持它嗎?

忽略事件似乎正常工作,它並沒有太大的意義重建時,我沒有做任何使用的語言環境的反正觀點,但我要確保我不會介紹一些微妙的錯誤。

任何信息非常感謝。

回答

1

正如你所說,你GLSurfaceView是完全獨立的區域,它的確定添加localeconfigChanges,因爲它是確定以添加keyboardscreenSize如果你從未佈局變化取決於這些配置。

編輯:文檔:http://developer.android.com/guide/topics/resources/runtime-changes.html

但是,您可能會遇到在重新啓動應用程序並恢復顯著的數據可能是昂貴的情況下,並創建一個不好的用戶體驗。在這種情況下,你還有其他兩個選項:

[...]

灣處理配置改變自己

防止系統在某些配置更改重新啓動活動,但收到一個回調時的配置做改變,使您可以手動更新您的活動是必要的。

另外:http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

如果你的應用程序並不需要特定的結構變更時更新資源,你有一個需要你避免活動重新啓動時的性能限制,那麼你可以聲明您的活動會自行處理配置更改,從而阻止系統重新啓動活動。

+0

TICK,但是如果有一些文檔支持它,那將會很棒嗎? – tenpn 2012-07-12 11:03:20

+0

我編輯了我的答案並提供了官方Android文檔的鏈接。 – chrulri 2012-07-12 11:37:16

相關問題