2010-06-12 52 views
0

我想防止我的應用程序在設備的方向更改時重新啓動。我已經根據下面的代碼鎖定了應用程序的方向,但是對於相同的內容沒有幫助。應用程序在更改方向時重新啓動,即使在鎖定後仍然在Android

<activity android:name=".CheckMemory" 
    android:configChanges="orientation" 
    android:screenOrientation="portrait" 
    android:theme="@style/customTheme" 
       android:label="@string/app_name"> 

    </activity> 

@Override 
    public void onConfigurationChanged(final Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
    //Do nothing here 
    } 
+0

定義「重新啓動」。你對這個活動看到了什麼行爲? logcat輸出中是否有任何線索來說明發生了什麼? – 2010-06-12 12:08:12

+0

我從鏈接http://developer.android.com/guide/topics/resources/runtime-changes.html答案從上面的鏈接 行情 「處理配置改變自己 如果應用程序沒有按」 t需要在特定的配置更改期間更新資源,並且您有一個性能限制,要求您避免重新啓動Activity,然後您可以聲明您的Activity處理配置更改本身,從而防止系統重新啓動您的活動「 – Maneesh 2010-06-12 12:16:33

回答

1

我做到了,效果很好。

<activity android:name=".CheckMemory" 
     android:configChanges="orientation" 
     android:screenOrientation="portrait" 
     android:theme="@style/customTheme" 
        android:label="@string/app_name"> 

     </activity> 

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

首先,請記住,屏幕方向是每個活動定義。因此,如果您有除CheckMemory之外的其他活動,他們仍然會響應方向的變化。您需要爲所有活動定義android:screenOrientation。其次,你似乎在調用super.onConfigurationChanged(newConfig),這不只是做系統通常會做的事情嗎? 嘗試刪除該行,並確實將方法留空(真的什麼都不做)。

+0

Leaving the方法爲空將導致系統拋出異常。如果你沒有做任何事情,你可以安全地完全刪除該方法。 – 2010-06-12 12:07:16

+0

我只是做下面的工作,不知道如何。 @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); } – Maneesh 2010-06-12 12:09:50

相關問題