2010-12-06 90 views
4

當我的主要活動在啓動屏幕後啓動時,它會分析4個大XML文件。這需要幾秒鐘的時間,我可以在啓動畫面顯示的時間內隱藏它。在Android中的方向更改時活動重新加載

但是,當屏幕方向改變或者當我在子活動後回到主活動時,它會再次解析,從而導致我的應用程序「掛起」幾秒鐘,並且它沒有響應或者該時間內的任何內容。

我明白這是Android中的正常行爲,但沒有辦法避免這種情況?

我看了一些關於savedinstancestate,但我似乎無法理解的文檔..

回答

12

如果您的API級別爲12或更低,請在每個活動節點的Android清單文件中添加此代碼。

android:configChanges="orientation|keyboardHidden" 

對於13級及以後你還必須有「屏幕尺寸」,即:

android:configChanges="orientation|keyboardHidden|screenSize" 

現在在你的每一個活動的Java類粘貼此代碼。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
    // Checks whether a hardware keyboard is available 
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { 
     Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { 
     Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

非常感謝你!這工作:) – Galip 2010-12-06 12:26:14

3

您可以通過在AndroidManifest文件中添加android:configChanges =「orientation」來避免這種情況。

相關問題