gpt4 book ai didi

android - 设置 FLAG_ACTIVITY_CLEAR_TASK 后如何避免 startActivity 黑屏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:30 25 4
gpt4 key购买 nike

我正在使用以下内容发起一项新 Activity :

Intent intent = new Intent(this, MyNewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
overridePendingTransition(0, 0);

MyNewActivity 启动时,显示黑屏。

如果我删除 Intent.FLAG_ACTIVITY_CLEAR_TASK,Activity 启动时不会随时显示黑屏(相反,加载新 Activity 时会显示上一个 Activity)。

有什么办法可以避免黑屏吗?删除标志似乎不是一个选项(我需要清除所有当前任务的堆栈并启动一个新 Activity 作为根 Activity )。

编辑:我附加了一个非常简单的代码来重现这个问题(为应用设置一个深色主题,例如 Theme.AppCompat)。黑屏显示的时间很短(取决于启动时接收 Activity 所做的工作量),但您可以看到它。如果不使用FLAG_ACTIVITY_CLEAR_TASK,不显示黑屏,过渡平滑:

主 Activity

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MyNewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
overridePendingTransition(0,0);
}
});
}
}

我的新 Activity

public class MyNewActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_bright">

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CLICK ME!" />

</RelativeLayout>

activity_new.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_light">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am the new activity!" />

</RelativeLayout>

谢谢!

最佳答案

要完全避免“黑屏”(也称为“预览”),您可以将以下内容添加到您的 AppTheme:

<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowDisablePreview">true</item>
...
</style>

然而,更好的方法是在 Activity.onCreate 期间在主线程上做更少的事情,并在用户等待时显示预览屏幕。为了顺利过渡,您可以为您的窗口设置自定义背景,将其添加到您的主题中:

<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowBackground">@drawable/slash_screen</item>
...
</style>

关于android - 设置 FLAG_ACTIVITY_CLEAR_TASK 后如何避免 startActivity 黑屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com