2010-06-12 50 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

相关问题