解决Android程序启动出现黑色闪现的问题。

工作半年有余,感觉工作忙起来的时候非常忙,闲的时候就非常闲,这应该就是IT人生吧。为了积累平时开发中遇到的问题,常常想开个博客什么之类的总结总结,可是想了大半年没动手。这是在CSDN上的第一篇文章,以简单开始,慢慢锻炼自己的学做水平和解决问题的思路。

最近在做一个TV盒子的项目,整个程序较手机上要大而复杂一些,因此遇到了一些关于用户体验的问题。


问题:Activity启动中onCreate耗时过多引起黑屏闪现一下(1-3s),用户体验非常不好!


我们都知道android程序启动的过程为Application→MainActivity→界面完全展示。我们可以继承Application类初始化一些变量,用于全局使用,但是切记不可做过多的耗时工作。

接下来是启动的Activity的onCreate方法。onCreate开始的时候会加载主配置布局文件,也即是setContentView,该函数我测试过整整消耗了200-400ms的时间,当然能耗这么多时间说明布局文件比较复杂。其他的setOnListener基本不耗时。


经过几番折腾,发现无法解决这个setContentView的耗时问题。上网查找别人的解决方案基本就有两个:

1. 设置android:Theme为透明;

2. 设置android:Theme为透明背景。

例如 http://www.apkbus.com/forum.php?mod=viewthread&tid=128126


两个方法都不能解决我的问题,为什么???

1. 主题背景为透明的时。在程序主界面点击一个坑位并快速返回,此时闪现了一下桌面,然后才显示主界面,用户不知情还以为程序崩溃重启了;

2. 主题设置为背景图。由于程序要做一个开机启动大图广告页面,这个大图是不固定的,使用上次下载在本地的图片。因此就会出现这样一种情景,先展示主题背景图,1s后展示广告图。这也是不可行的。


最终解决的目标是,开始就显示广告页面,进入主界面又不出现闪现桌面的情况!

走了很多弯路耗了很多时间、各种尝试,最后发现的解决方法如下:

    <style name="Theme.Global.background" parent="@style/ASBaseTheme">
        <item name="android:windowDisablePreview">true</item>
        <item name="android:windowBackground">@drawable/bg</item>
    </style>

没错!就是这么简单!屏蔽掉Preview就不会出现启动时manifest配置的Theme背景图了!


总结:

看起来问题的解决方法很简单,但网上竟然没找到这个解决方法,当时就被气惨了!

哎!这就是经验!不是说那些大牛有多牛,其实就是别人的经验比你丰富!加油!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值