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方法。

阅读更多
个人分类: android短信
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭