MTK启动短信优化闪屏(闪白屏或者黑屏)

Activity启动的时候需要一段时间去初始化,这个时候就会有一定的延迟,为了提高用户体验,Android引入了StartingWindow来对这个过程进行过度,在真正的Activity进行初始化的时候会显示StartingWindow,该StartingWindow的主题样式和真正的Activity的主题是一样的。在真正的Activity初始化完成之后就会消除掉StartingWindow,显示真正的Activity。由于这个StartingWindow只是一个很简单的Window,它只是具有真正Activity的主题样式,但是内容是没有被指定的,当真正的Activity的主题设置了windowBackgrond后,StartingWindow就会显示这个windowBackground,如果你的windowBackground是白色的,那么闪白屏,windowBackground是黑色的就会闪黑屏。


MTK是使用这样的方式来避免闪屏的。

原来打开短信默认的打开界面是ConversationList,但是MTK默认打开的界面是BootActivity。

其配置的主题是(不会出现闪屏)

<style name="Theme.NoDisplay">

        <item name="android:windowBackground">@null</item>没有背景

        <item name="android:windowContentOverlay">@null</item>

        <item name="android:windowIsTranslucent">true</item>透明

        <item name="android:windowAnimationStyle">@null</item>

        <item name="android:windowDisablePreview">true</item>禁用窗口的预览动画

        <item name="android:windowNoDisplay">true</item>

    </style>


然后在BootActivity.java中

private void enterMms() {

        MmsLog.d(TAG, "bootActivity enter MMS");

        finish();


        int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK;

        if (!FolderModeUtils.startFolderViewList(

                mOpBootActivityExt.enterMms(), this, null, flags)) {

            Intent intent = new Intent(this, ConversationList.class);

            intent.setFlags(flags); // /M: changed for alps00437708

            startActivity(intent);

        }

    }

在这里finish自己,打开真正的短信列表界面ConversationList,就不会出现闪屏了。

注意类似BootActivity一定不能做复杂的逻辑操作,他就是一个临时展现的activity,UI也要简单化。

其实还可以有其他优化方案,例如加载的android:windowBackground设置为一张图片,这样就不会黑屏白屏闪屏了。然后可以在onCreate再设置回自己的主题。setTheme方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值