2013-05-09 69 views

回答

0

您需要將其添加到AndroidManifest.xml中的Activity中。只需添加「方向」將不適用於所有設備。

android:configChanges="orientation|screenSize" 
0

在您的AndroidManifest.xml中爲該活動設置android:configChanges="orientation"

+0

在蜂窩和上面的設備上,您需要將'screenSize'添加到'configChanges'。 – 2013-05-09 20:44:25

0

雖然其他答案使用android:configChanges建議,我會說這是真的只是一個不得已的選擇,因爲它意味着不同方向的資源將不會自動加載。

相反,您應該使用您的活動的onSaveInstanceStateonRetainNonConfigurationInstance功能。 (如果您使用的片段,你應該使用setRetainInstance而不是選擇後者的。)

另一種選擇是使用ContentProvider來存儲您下載使用AsyncTask到一個數據庫中的數據,因此不需要重新無論如何,下載。

您應該閱讀this瞭解更多信息。

+0

我不同意。他正在使用異步任務。這意味着他絕對不需要銷燬它,因爲AsyncTask不會被銷燬並繼續運行,可能會導致崩潰和內存泄漏。當然,我不同意並認爲savedState總體上是一種醜陋的黑客攻擊,但如果使用AsyncTasks或線程,則必須使用configChanges。 – 2013-05-09 21:30:06

+0

那麼,我認爲他應該在保留的'Fragment'或'Service'中使用AsyncTask。使用'android:configChanges'是我眼中的黑客,因爲它阻止了任何方向特定的資源被加載,雖然在這種情況下可能不是問題,但在進行主從細節活動時它可能是一個真正的問題。 – 2013-05-09 21:37:58

+0

創建一個服務,除非其意圖加載跨越活動的數據,否則在這裏絕對是錯誤的。你正在創造一個完全不需要的上下文和複雜性。把它放在片段中並不能解決任何問題,因爲方向的改變也會破壞片段,並假定它在XML中(這是正確的方式)。這裏的問題是Google做出了一個可怕的設計決定,包括旋轉(和鍵盤滑出等)的全部破壞,我們需要解決它。你儘可能以最簡單的方式做到這一點 - 關閉它。 – 2013-05-09 22:46:55

相關問題