当我将一个活动转到另一个活动时,在交易之间,黑色屏幕会持续几秒钟。我在调用 startActvity()之前正确完成了活动。
我的活动使用 android:theme =“@ android:style / Theme.Translucent”主题。即使在活动交易之间出现了黑屏
任何人都可以告诉我如何解决这个问题
提前致谢:)
答案 0 :(得分:2)
禁用此默认动画创建一种样式:
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
并将其设置为清单中活动的主题:
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
答案 1 :(得分:1)
在调用startActivity()之前无需完成活动。
确保您已在被调用的Activity的onCreate中设置了内容视图,并且您没有阻止UI线程(如果您已覆盖它们,请检查onCreate,onStart和onResume)。
答案 2 :(得分:1)
假设: -
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xyz);
// comment code here
}
如果你从活动A转到B然后尝试在OnCreate中注释代码,在活动B中注释OnResume像这样并检查仍然会出现黑屏的情况。如果出现,则尝试更改主题。
答案 3 :(得分:1)
您不需要管理finshing您的活动,当活动不再可见时,这将自动管理。只需使用:
startActivity(new Intent(this, MyNextActivity.class));
并使用此代码以您用于导航活动更改的任何方法。
如果您确保您的窗口是活动的背景,您可以将窗口背景设置为黑色以外的颜色:
<item name="android:windowBackground">@drawable/window_background</item>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/window_background"/>
</shape>
windowBackground in Android 6 (Marshmallow)
另一个选项是管理转换,因此第一个转换的结束和第二个转换的开始之间没有间隙。但是,您没有提到过渡。
How to remove the delay when opening an Activity with a DrawerLayout?
答案 4 :(得分:0)
如果您具有finish()或FLAG_ACTIVITY_CLEAR_TASK-ICS之前的设备上可能会出现空白屏幕
要避免出现黑屏,您必须在意图中添加一行
overridePendingTransition (0, 0);
示例(kotlin):
val intent = Intent(applicationContext, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
overridePendingTransition (0, 0)
示例(Java):
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
overridePendingTransition (0, 0);