如何检查活动是否可见?onResume是不够的

Cod*_*ers 5 android android-lifecycle android-activity

我的一项活动是嵌入VideoView一些内容.我实现暂停/恢复视频onPause()onResume()分别,但让我吃惊- onResume被称为前的活动是用户真正可见.

确切地说,情况如下:

  • 活动在屏幕上,视频正在播放
  • 用户使用电源按钮锁定手机
  • 活动被onPause()调用,视频停止
  • 用户按下电源按钮
  • 在用户解锁屏幕之前,活动被 onResume()调用(从而恢复视频)

我用Android 2.2,2.3和4.0确认了这个行为.我想它是故意这样做的,让活动准备在锁定屏幕消失后立即重绘.

如何检测活动实际出现在用户身上的时刻?我试图等待onWindowFocusChanged(true)被叫,它似乎有效,但它并没有让我觉得非常安全.

Gee*_*uUp 8

您需要等待onWindowFocusChanged事件以及OnResume事件.这是Android 4.1+中不再出现的众所周知的问题.有关详细信息,请访问http://android-developers.blogspot.co.uk/2011/11/making-android-games-that-play-nice.html