切换Activity时显示白屏

问题描述 投票:0回答:9

当我从一个 Activity 移动到另一个 Activity 时,白屏显示 2 秒。我正在使用这段代码:

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

我该如何解决这个问题?

android android-intent android-activity android-studio start-activity
9个回答
35
投票

像这样创建一个主题:

<style name="YourTheme" parent="YourParentTheme">
    <item name="android:windowDisablePreview">true</item>
</style>

将此主题应用于您的第二个活动


6
投票

如果您的活动包含更复杂的布局,请不要在设置标志后使用

finish()
。改用
FLAG_ACTIVITY_CLEAR_TOP and _TASK
,它会解决你的问题。这对我来说非常有用

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.l̥FLAG_ACTIVITY_CLEAR_TOP );
startActivity(intent);

或像下面这样简单地使用

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);


5
投票

从 ActivityOne 切换到 ActivityTwo 时,直到 ActivityTwo 的 onCreate 方法被执行,默认背景显示为白/黑屏幕。好的做法是不要在 onCreate 中进行大量操作。要解决此问题,请将透明背景设置为 ActivityTwo,如下所示。

<style name="YourTheme" parent="YourParentTheme">
<item name="android:windowBackground">@android:color/transparent</item>
</style>

在 Manifest 中设置上面的主题

<activity
            android:name=".ActivityTwo"
            android:theme="@style/YourTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

1
投票

尝试在调用

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
之前添加
startActivity(intent);

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

1
投票

尝试添加

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)


1
投票

如果您的活动包含更复杂的布局/包含需要渲染的大尺寸背景图像,因此只显示该白页。如果您想消除该时间延迟,请使用小尺寸 png 图像和清晰的布局设计。


0
投票

去下一个活动使用标志

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

0
投票

使用

finish
如果你想清除活动意味着当你按下回来时没有活动堆栈。

所以你想清除然后使用

finish
否则不要使用它。


0
投票

通过使用FLAG_ACTIVITY_NEW_TASK你会得到白屏,像使用这个一样删除它。它会起作用。

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
© www.soinside.com 2019 - 2024. All rights reserved.