Как избежать черного экрана при запуске, когда установлен FLAG_ACTIVITY_CLEAR_TASK?

Я запускаю новое мероприятие, используя следующее:

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 , активность запускается без отображения черного экрана в любой момент (вместо этого предыдущая активность отображается, пока новая загружается).

Есть ли способ избежать этого черного экрана? Удаление флажков, похоже, не является вариантом (мне нужно очистить весь стек текущей задачи и запустить новую активность как корневую).

EDIT: я добавляю очень простой код, который воспроизводит проблему (установите темную тему, например Theme.AppCompat для приложения). Черный экран отображается очень мало (зависит от того, сколько из них будет выполняться при поступлении при запуске), но вы можете его увидеть. Если вы не используете FLAG_ACTIVITY_CLEAR_TASK , черный экран не отображается и переход плавный:

Основная деятельность

 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); } }); } } 

MyNewActivity

 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> 

Благодаря!

Solutions Collecting From Web of "Как избежать черного экрана при запуске, когда установлен FLAG_ACTIVITY_CLEAR_TASK?"

Чтобы полностью избежать «черного экрана» (например, «предварительный просмотр»), вы можете добавить в свой 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>