onConfigurationChanged 未触发

Posted

技术标签:

【中文标题】onConfigurationChanged 未触发【英文标题】:onConfigurationChanged is not triggered 【发布时间】:2018-03-02 16:57:37 【问题描述】:

我想根据设备旋转设置活动配置。

我使用以下方法处理旋转:

@Override
public void onConfigurationChanged(Configuration newConfig) 
.....

它可以从纵向旋转到横向。回调触发和应用的方向改变。

但是当它是横向时它不会触发围绕设备旋转。但是应用程序的方向发生了变化。

我在清单中添加了以下行。

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

android:configChanges="orientation|screenSize"

我该如何处理?

【问题讨论】:

【参考方案1】:
android:configChanges="orientation|keyboardHidden|screenSize" rather than android:configChanges="orientation"

确保你没有打电话

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

任何地方。这将导致onConfigurationChange() 无法触发。

另外,请检查您的 manifest 中是否使用了 android:screenOrientation

或者,在java代码中setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

要将您的Activity 的方向强制为纵向模式,您不适合接收方向更改。

所以解决方案是不要setRequestOrientation 到特定模式。但改为使用SCREEN_ORIENTATION_SENSOR

参考:Android onConfigurationChanged not being called

【讨论】:

以上是关于onConfigurationChanged 未触发的主要内容,如果未能解决你的问题,请参考以下文章

片段和 onConfigurationChanged

更改语言环境后未调用 onConfigurationChange

移动到 1/3 屏幕宽度时未调用 onConfigurationChanged

内存泄漏通过onConfigurationChanged()

onConfigurationChanged 屏幕停止在设备上旋转。在模拟器上工作

Android开发,重写了onConfigurationChanged方法。横屏切换竖屛不会重建,而竖屛切换横屏却仍会重建活动