在活动之间切换时显示白屏

Posted

技术标签:

【中文标题】在活动之间切换时显示白屏【英文标题】:White screen is displayed while switching between Activities 【发布时间】:2016-01-14 17:39:03 【问题描述】:

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

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

我该如何解决这个问题?

【问题讨论】:

显示您的第二个活动 xml 和 java 文件。 SecondActivity 中有网络服务吗? Amsheer :没有服务器调用。 FirstActivity 有 MoodStock 扫描仪相机。第二个活动只包含一个文本“hello world”。 【参考方案1】:

像这样创建一个主题:

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

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

此链接中的更多详细信息:http://www.tothenew.com/blog/disabling-the-preview-or-start-window-in-android/

【讨论】:

也为我工作。谢谢。 这实际上是做什么的? 延迟活动加载时间。 通过添加该行无需单击即可打开应用程序。它需要两次点击,第二次点击后它会保持 2 秒并启动应用程序 如果我没有实现样式的活动怎么办?例如,当我只想从我的应用程序中打开一个新浏览器时。当我回到我的应用程序时,我看到空白屏幕...... Intent intent = new Intent(Intent.ActionView);意图.AddFlags(ActivityFlags.ClearTop);意图.SetData(Android.Net.Uri.Parse(url)); context.StartActivity(intent);你能帮忙吗?【参考方案2】:

如果您的活动包含更复杂的布局,请不要在设置标志后使用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);

【讨论】:

很遗憾,它没有完成您当前的活动。【参考方案3】:

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

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

在上述主题的清单中

<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>

【讨论】:

【参考方案4】:

尝试在调用startActivity(intent);之前添加intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

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

【讨论】:

【参考方案5】:

尝试添加intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

要转到下一个活动,请使用标志

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

【讨论】:

finish() 的目的是什么? 完成()当前活动 我不想完成我当前的(第一个)活动。 好的,然后显示您的完整代码。您是否已将设置的内容视图添加到您的第二个活动? 有时只使用这个是行不通的..所以最好试试 Youractivityname.this 或 getApplicationContext【参考方案8】:

如果要清除活动,请使用finish,这意味着当您按下返回时,没有活动堆栈。

所以你想清除然后使用finish否则不要使用它。

【讨论】:

【参考方案9】:

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

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

【讨论】:

以上是关于在活动之间切换时显示白屏的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 应用程序在启动时显示白屏几秒钟

Electron 构建时显示白屏

OpenGL在显示多个对象时显示白屏

升级到 iOS 4.2 后应用程序启动时显示白屏

nwjs解决页面透明化,启动时显示白屏的问题

Android启动黑屏白屏解决方案