在活动之间切换时显示白屏
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);
【讨论】:
以上是关于在活动之间切换时显示白屏的主要内容,如果未能解决你的问题,请参考以下文章