原文: http://www.cnblogs.com/jayceli/archive/2012/10/10/2718984.html
今天碰到一个奇怪的问题。
onConfigurationChanged未被调用。
根据正常认知,在AndroidManifest.xml中设置android:configChanges="orientation“,
然后在Java代码中重写onConfigurationChanged,即不会重复Activity生命周期,而是调用onConfigurationChanged。
然而今天这种做法没有效果,什么原因呢。
原来,自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变。
所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,
如果你想阻止程序在运行时重新加载Activity,除了设置”orientation“,你还必须设置"ScreenSize"。
解决方法:
AndroidManifest.xml中设置android:configChanges="orientation|screenSize“
相关推荐
但可以通过在AndroidManifest.xml中对应的Activity标签中添加`android:configChanges`属性,并指定需要监听的配置变化,来避免Activity被重建,而是调用`onConfigurationChanged` 方法。 例如,如果你希望在屏幕...
</resources> <!--中文版--> ``` ```xml <resources> <string name="welcome_message">Welcome to our app!</string> </resources> <!--英文版--> ``` ```xml <resources> <string name="welcome_message">До...
当 `onConfigurationChanged()` 被调用时,可以看到 `str` 的值在屏幕旋转时得到保留,这表明配置改变并未导致 `Activity` 的重新创建。若不指定 `android:configChanges`,每次屏幕旋转都会导致 `Activity` 重新...
<item name="android:windowNoTitle">true</item> </style> </resources> ``` 然后在`AndroidManifest.xml`中应用这个主题: ```xml <activity android:name=".YourActivity" android:theme="@style/NoTitle"> ...
- 动画定义通常包含在res/anim目录下,通过`<rotate>`、`<translate>`等标签来描述旋转、平移等动作。例如,`<rotate>`标签可以设置`fromDegrees`和`toDegrees`属性来定义旋转的角度,`duration`属性定义动画持续...
总之,通过合理配置`<activity>`标签以及重写`onConfigurationChanged()`方法,开发者可以有效控制Activity在横竖屏切换时的生命周期行为,确保应用在不同屏幕方向下的连续性和稳定性,从而提高用户体验。...
selectedDate = new MutableLiveData<>(); // 初始化默认日期 Calendar calendar = Calendar.getInstance(); selectedDate.setValue(calendar); } public MutableLiveData<Calendar> getSelectedDate() { ...
在源码中,还可能有对AndroidManifest.xml的修改,尤其是`<activity>`标签内的`android:configChanges`属性,它定义了哪些配置更改应由应用程序自己处理,而不是默认地重新创建活动: ```xml <activity android:...
这是因为默认情况下,Android系统为了保持应用的一致性,在屏幕方向发生变化时会销毁当前活动(Activity)并重新创建一个新的实例,这会导致`onCreate()`方法被重新调用。这对于某些场景来说并不理想,例如当用户正在...
<item name="colorPrimaryVariant">@color/colorPrimaryVariantDark</item> <item name="colorOnPrimary">@color/colorOnPrimaryDark</item> ... <item name="android:windowBackground">@color/night_...
如果不处理配置变化,屏幕旋转会导致以下生命周期方法顺序:`onPause()` -> `onSaveInstanceState(Bundle outState)` -> `onStop()` -> `onDestroy()` -> `onCreate(Bundle savedInstanceState)` -> `onStart()` ->...
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <!-- res/values-night/styles.xml --> <style name="AppTheme" parent="Theme....
1. **配置Activity**:在AndroidManifest.xml中,将Activity的`android:configChanges`属性设置为`orientation|screenSize`,这样在横竖屏切换时,系统不会默认销毁Activity,而是调用`onConfigurationChanged()`...
- `onConfigurationChanged(Configuration newConfig)`:如果在AndroidManifest.xml中设置`android:configChanges="orientation"`,那么Activity不会被销毁,而是直接调用此方法。 4. **AndroidManifest配置** - ...
android:orientation="horizontal"></LinearLayout> </RelativeLayout> ``` ##### Activity代码实现 在Activity代码中,关键部分是`onConfigurationChanged`方法中的处理逻辑。该方法会在屏幕旋转时被调用。这里...
有时,你会遇到横竖屏切换时`onConfigurationChanged`被调用次数不一致的情况。这可能是由于设备厂商对Android系统的定制导致的行为差异。通常,你应该确保在`onConfigurationChanged`方法中正确处理配置变化,以...
在这个XML文件中,每个Activity都可以通过`<activity>`标签来定义,其中有一个属性`android:screenOrientation`可以用来控制Activity的屏幕方向。例如,如果你想让Activity始终处于竖屏模式,你可以这样写: ```xml...