Android应用程序在方向更改时重新启动

时间:2010-11-02 07:00:47

标签: android

当我更改方向应用程序重启时,我丢失了当前数据.. 我正在使用活动组,当我从主要活动中重新开始定向应用程序时,它包含许多活动。

是否可以避免此应用程序在方向更改时重新启动?

有人知道请告诉我..

5 个答案:

答案 0 :(得分:10)

如果你的android:targetSdkVersion =“12”或更少

机器人:configChanges = “取向| keyboardHidden” >

如果您的android:targetSdkVersion =“13”或更多

机器人:configChanges = “取向| keyboardHidden |屏幕尺寸” >

答案 1 :(得分:9)

Android会在默认情况下更改方向时重新启动活动。

在Android销毁活动之前,您需要通过调用onSaveInstanceState()来保存您的数据/状态。

看看这里:Handling Runtime Changes

这个SO question也被证明是一个很好的阅读,理解你如何处理它。

您可以通过向AndroidManifest文件中的活动添加android:configChanges="orientation"来阻止此操作。

来源:http://developer.android.com/guide/topics/manifest/activity-element.html#config

答案 2 :(得分:2)

您可以通过以下方式告诉系统忽略更改:
    <activity android:name="SomeActivity" android:configChanges="keyboardHidden|orientation">

但我建议不这样做,因为这通常表明尚未出现的潜在问题。

我的建议是,您只需添加一个新类,该类将处理所有长时间操作或任何活动修改的恢复。

答案 3 :(得分:1)

这是应该如何工作的。有一种方法可以让它不这样做,但你应该遵循生命周期并能够优雅地处理活动重启。这已被多次询问。

答案 4 :(得分:1)

API文档中有一些关于当前Activity被销毁和重建的原因的一些很好的信息。我上次从事相关工作时发现它非常具有启发性。

  

除非另有说明,否则配置更改(例如屏幕方向的更改[...])将导致您的当前活动被破坏,通过onPause(),onStop()的正常活动生命周期过程,和onDestroy()视情况而定。如果活动位于前台或用户可见,则在该实例 中调用onDestroy()后,将创建活动的新实例 ,无论如何上一个实例从onSaveInstanceState(Bundle)生成的savedInstanceState。

http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges