关于Android 启动页加载先预加载系统白页问题

问题:打开应用进入欢迎页,用户会看到丑陋的半秒全白!!!然后才进入欢迎页

解决:因为系统application在加载时也会进行耗时操作,在一个Activity打开时,如果该Activity所属的Application还没有启动,那么系统会为这个Activity创建一个进程(每创建一个进程都会调用一次Application,所以Application的onCreate()方法可能会被调用多次),在进程的创建和初始化中,势必会消耗一些时间,在这个时间里,WindowManager会先加载APP里的主题样式里的窗口背景(windowBackground)作为预览元素,然后才去真正的加载布局,如果这个时间过长,而默认的背景又是黑色或者白色,这样会给用户造成一种错觉,这个APP很卡,很不流畅,自然也影响了用户体验。所以我们找到welcomeactivity的清单文件设置windowBackground修改为我们想要的欢迎页即可。

<style name="AppWelcome" parent="AppTheme">
    <item name="android:windowBackground">@drawable/test</item>
</style>
<activity
    android:name=".WelcomeActivity"
    android:theme="@style/AppWelcome">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android 中,我们可以使用 `preLoad()` 方法来加载下一个 `Activity` 面。这个方法会在当前 `Activity` 中异步地加载下一个 `Activity` 面的布局和资源,以提高用户体验。 以下是一个加载下一个 `Activity` 面的示例代码: ```java private void preLoadNextActivity() { Intent intent = new Intent(this, NextActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(intent); overridePendingTransition(0, 0); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); // 模拟加载时间 } catch (InterruptedException e) { e.printStackTrace(); } // 加载完成后,销毁加载的 Activity finishActivity(NextActivity.class.hashCode()); } }).start(); } ``` 上面的代码中,我们首先创建了一个 `Intent` 对象,用来启动下一个 `Activity` 面。然后,我们使用 `startActivity()` 方法启动这个 `Activity`,并设置了 `FLAG_ACTIVITY_NO_ANIMATION` 标志位,以避免动画效果。接着,我们使用 `overridePendingTransition()` 方法来去掉当前 `Activity` 的退场动画。这样做可以提高用户体验,使用户感觉当前 `Activity` 顺畅地过渡到了下一个 `Activity`。 接下来,我们在一个新线程中模拟加载时间,等待 5 秒钟。在等待时间结束后,我们使用 `finishActivity()` 方法销毁加载的 `Activity`,以释放资源。 最后,我们可以在当前 `Activity` 中调用 `preLoadNextActivity()` 方法来加载下一个 `Activity` 面。这样,在用户点击跳转按钮时,下一个 `Activity` 面就能够快速地加载出来,提高用户体验。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值