在我的主要活动中,我在onCreate中调用setContentView.然后在onResume中我启动一个服务,如果它是第一次进入服务,它会创建一个警报并停止.我希望在调用setContentView时显示布局,但单步执行调试器表明它在服务返回之前不会出现.
编辑
似乎在第一个应用程序(MAIN / LAUNCHER)的开头没有调用onWindowFocusChanged.
通过调试,似乎发生以下情况: –
MAIN onCreate – onStart – onResume(这是服务启动的地方)
SERVICE类 – onStart – 服务返回
MAIN -onResume – onWindowsFocusChanged(屏幕首次出现)
我看过的图表说活动是从onStart开始的,但第一个活动似乎并非如此.有没有办法强制屏幕在开幕处查看?
解决方法
内容视图是在调用setContentView()之后立即定义的,因此您可以直接从此处开始使用findViewById()并管理用户界面的视图.
但:
> onResume()返回之前不显示视图.这实际上是onResume()的目的之一:每次Activity都在前台时调用它,因此就在实际显示其用户界面之前调用它.
>这并不意味着即使显示UI,此时UI也是可见的.例如,它可以被锁屏隐藏.当用户界面实际可见时(刚刚获得焦点时),将调用onWindowFocusChanged(true).
因此,用户界面显示和可见的时刻介于onResume()(之前调用)和onWindowFocusChanged(true)之间(之后调用).