当设备被锁定并处于横向时,在onPause之后调用ListAdapter getView

时间:2014-09-15 14:06:48

标签: android listview

我有一个使用listview的应用程序。

按照以下要求更新并更清楚地解释情况: 在问到下面的问题后,我想我找出了问题发生的确切顺序:

  1. 启动应用程序
  2. 转向横向
  3. 锁定屏幕 - >由于锁定屏幕处于纵向方向,因此强制纵向方向
  4. 屏幕上的片段和活动的onPause()称为
  5. 在〜1秒后,为使用屏幕上的屏幕视图的项目调用Adapter.getView()
  6. 解锁屏幕
  7. onResume被称为
  8. 我最好的猜测是,在第5步调用getView(),因为锁定屏幕处于纵向方向。看起来Android尝试将应用程序屏幕重新布局为纵向,尽管由于屏幕已被锁定而不需要这样做。

    预期和正常吗?我建立了我的逻辑,即在任何其他编码之前,屏幕上的活动/片段的onResume将始终被调用。

1 个答案:

答案 0 :(得分:1)

所以我设法确认了这种行为的原因如下:

  • 当屏幕锁定时,应用程序处于横向方向
  • 锁定屏幕本身以纵向固定

Android强制重新布局“锁定”锁定屏幕的应用程序,因为它们都是以不同方向固定的。

我发现除了强制执行应用程序屏幕方向之外没办法阻止这种情况,这在我的情况下不是一个选项。我找到的唯一解决方法是在每个Adapter.getView()实现的开头进行以下编码。

  public View getView(int index, View convertView, ViewGroup parent) {
        if (Utils.isScreenLocked()) {
            return aConvertView;
        }
  }

isScreenLocked()方法使用KeyGuardManager检查屏幕是否被锁定。