簡體   English   中英

當用戶在縱向和橫向模式之間切換時,為什么系統會銷毀並重新啟動活動?

[英]Why the system destroys and restarts an Activity when user switches between portrait and landscape modes?

眾所周知,當用戶在縱向和橫向模式之間切換時,android會銷毀並重新啟動Activity,這可以通過重寫onConfigurationChanged()回調來防止。 有人可以向我解釋一下系統銷毀並開始活動的實際需要嗎? 如果我重寫onConfigurationChanged()有任何副作用嗎?

盡管此行為確實非常強大,但由於您的應用程序會在運行時自動適應設備的配置,因此對於某些新的Android開發人員而言,有時會感到困惑,他們想知道為什么會破壞並重新創建其活動。 面對這一“問題”,一些開發人員選擇自行處理配置更改,我認為這是一種短期解決方案,當其他設備問世或應用程序變得更復雜時,它們的生命將變得更加復雜。 自動資源處理是使應用程序的用戶界面適應各種設備和設備配置的非常有效且簡便的方法。 雖然有時它是有代價的。

參考: http : //android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html

重新啟動Activity的主要目的是因為Android需要更改布局,資源等以適應新的屏幕方向。 您可能知道,每個方向(通常)都有自己的應用程序資源 Android的設計人員認為最好只重新啟動Activity,因為在更改資源中需要進行大量的重做。

在Honeycomb以Fragment的外觀問世之后,這一點尤其重要。 根據您的方向,您可以顯示完全不同的片段集和關聯的數據集。

我強烈建議您不要重寫onConfigurationChanged() 相反,請閱讀其答案中提供的HandlerExploit鏈接。 它顯示了如何使用onRetainNonConfigurationInstance()更有效地處理方向更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM