Android Activity启动黑/白屏原因与解决方式

Activity启动黑屏/白屏的原因

Activity的onCreate()方法中调用了setContentView()方法,传入了我们绘制的layout文件,也就是我们应该看到的Activity内容。但是Android系统在启动一个新的Activity时,首先进行的不是绘制Activity ContentView。下图为Activity的UI结构。

Android Activity启动黑/白屏原因与解决方式_第1张图片

可见,一个Activity中在ContentView的外围还有PhoneWindow、DecorView、TitleView,当Activity进行绘制时会先绘制这三个控件,此时ContentView还没加载进来,所以什么东西都看不到,系统会将屏幕填充主题默认的背景色,就出现了Activity启动之前的黑屏/白屏现象。

解决方法

1) 将主题背景设置成一张图片,但图片的屏幕适配问题就需要考虑了,主题中的背景图片会自动拉伸

2) 将主题背景变成透明的,这样在ContentView加载出来前,会透过启动的Activity看到桌面,不会存在黑屏/白屏的现象,再将标题栏去掉,把Activity设置成全屏的。缺点是如果启动的是一个有复杂耗时操作的Activity,会有一种延迟的感觉。

 

 

你可能感兴趣的:(Android开发)