在我的主要活动中,我在onCreate中调用setContentView.然后在onResume中我启动一个服务,如果它是第一次进入服务,它会创建一个警报并停止.我希望在调用setContentView时显示布局,但单步执行调试器表明它在服务返回之前不会出现.
一旦调用setContentView,它是否应该显示?
编辑
似乎在第一个应用程序(MAIN/LAUNCHER)的开头没有调用onWindowFocusChanged.通过调试,似乎发生以下情况: - MAIN onCreate - onStart - onResume(这是服务启动的地方)SERVICE类 - onStart - 服务返回MAIN -onResume - onWindowsFocusChanged(屏幕首次出现)
我看过的图表说这个活动是从onStart开始的,但是第一个活动似乎并不是这样.有没有办法强制屏幕在开幕处查看?
内容视图在调用之后立即定义setContentView(),因此您可以直接从此处开始使用findViewById()和管理View用户界面的s.
但是:
onResume()返回前不显示视图.这实际上是以下目的之一onResume():它在每次Activity前进时被调用,因此就在实际显示其用户界面之前.
这并不意味着即使显示UI,此时UI也是可见的.例如,它可以被锁屏隐藏.onWindowFocusChanged(true)当用户界面实际可见时(刚刚获得焦点时)调用.
因此,即时在该用户界面都显示和可见之间onResume()(这是之前的称呼)和onWindowFocusChanged(true)(这是后立即调用).
否,在onCreate方法中,活动仅被初始化。活动的真正显示是在onWindowFocusChanged之前的某个地方。来自文档
请记住,onResume 并不是表明您的活动对用户可见的最佳指标;诸如键盘保护之类的系统窗口可能位于前面。使用 onWindowFocusChanged(boolean) 可以确定您的活动对用户可见(例如,恢复游戏)。
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |