1

我正在开发一个在 SDK 7 中带有 TabHost 的 Android 应用程序。

我的问题是屏幕方向更改处理程序无法完成这项工作。这是场景:

  • 在纵向和横向之间切换时,屏幕更新良好,反之亦然。
  • 每当黑屏(屏幕保护程序)打开或我按下锁定按钮时,屏幕都无法更新。

我所说的“失败”更新屏幕的意思是:

  • 在横向模式下,我按下锁定按钮。之后,我以竖屏模式解锁,竖屏完美更新。但是,一旦我旋转到横向模式,屏幕无法在横向模式下更新。在我再次旋转为纵向然后再次将其旋转为横向后,横向模式将再次完美更新。在纵向模式下,我按下锁定按钮,没有发生上述失败情况。

这是我使用的方法:

  • 我申请:android:configChanges="keyboardHidden|orientation"在每个场景中(TabActivity 和它的每个孩子)
  • 我申请:onConfigurationChanged()在每个子屏幕中
  • 我没有使用任何景观资源(布局资源和可绘制土地)。因此,我只对屏幕使用一种 xml 布局(横向和纵向)

对我的问题有什么建议或解决方法吗?我会感激并尝试每一个建议。谢谢 :D

4

1 回答 1

0

您的解决方案应该是正确处理配置更改。使用 configChanges 只是针对非常极端的情况的一种优化,但是您仍然需要为保存 Activity 状态和销毁 Activity 以减轻内存压力的情况做好准备。

在您的活动中:

@Override
public void onSaveInstanceState(Bundle outState) {
    // Put any temporary state for this Activity instance
    // into the outState bundle
}

然后在 onCreate() 中:

@Override
public void onCreate(Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        // Retrieve and reassign any state that you saved
    }
}

另请参阅处理运行时更改

于 2014-07-30T23:10:12.263 回答