Intereting Posts
Ошибка после обновления Samsung | Monogame | Обнаружение вида view.height как ширина устройства Android Throwing OutOfMemoryError «Не удалось выделить выделение по 164 байта с 44 свободными байтами и 44B до OOM» (рекурсивный случай) Может ли сборщик мусора отменить выделение одного экземпляра? (И почему и как его избежать) Отключить / закрыть экран блокировки Android Программно Как реализовать анимацию google + listview Может ли трансляция трансляции отслеживать несколько передач? Получение NoClassDefFoundError: android.os.AsyncTask Android: как определить, вспыхнула ли камера Android ndk no rule to make target Как программно добавлять подписки на календарь на Android? Как получить GridView, который адаптирует его высоту при добавлении элементов Каковы различия между внутренним хранилищем, внешним хранилищем, SD-картой и съемным хранилищем? Как очистить все действия из стека? Переключатели активности / фрагментов совместимы с устройствами до Lollipop? Как я могу установить TextColor, TextSize из PagerTitleStrip из кода?

Как избежать черного экрана при запуске, когда установлен 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>