【问题标题】: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”。

标签: android android-intent android-activity android-studio start-activity


【解决方案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);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-04-08
              • 2014-04-18
              • 1970-01-01
              • 1970-01-01
              • 2021-11-01
              • 1970-01-01
              相关资源
              最近更新 更多