Как избежать черного экрана на startActivity, когда установлен 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
, действие запускается без показа черного экрана в любой момент (вместо этого предыдущее действие отображается, пока загружается новое).
Есть ли способ избежать этого черного экрана? Удаление флагов, кажется, не вариант (мне нужно очистить весь стек текущей задачи и запустить новое действие как корневое).
РЕДАКТИРОВАТЬ: Я прилагаю очень простой код, который воспроизводит проблему (установите темную тему, такую как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>
Спасибо!