[英]How to stop transition animation on clear activity stack android?
当我简单地从登录活动转到Main活动并遵循以下清晰的堆栈代码时,白屏闪烁几毫秒。
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
overridePendingTransition(0, 0);
如果我只是使startActivity不带标志(或者说不带清晰的后退堆栈)
overridePendingTransition(0, 0);
白屏不闪烁。
但是我必须清除后退堆栈,并以没有过渡动画的方式开始新的活动。 因此,它在几毫秒内不会闪烁/不会出现在白屏中。
期待很快得到一个完美的答案。 干杯!
尝试在清单中为登录活动设置noHistory="true"
,然后启动没有任何标志的HomeActivity
。 这应该可以解决您的问题。
不要使用Intent.FLAG_ACTIVITY_NEW_TASK
。 如果要清除后退堆栈(并假设登录Activity
是堆栈中唯一的登录Activity
),只需finish
当前活动:
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
startActivity(intent);
overridePendingTransition(0, 0);
finish();
Intent.FLAG_ACTIVITY_NEW_TASK
可能是导致闪烁的原因,因为它要求您创建一个全新的“任务”(这是具有给定历史记录的“活动”的集合),而不仅仅是重用当前的任务。 那时几乎就像导航到另一个应用程序一样。
正如我在问题中提到的,不使用标志的startActivity不会闪烁并显示白屏。
所以我选择了。
现在的问题是,当我进入主活动时,要清除第一登录活动堆栈。
我通过使用setter和getter方法将Login活动的上下文设置为Application类来解决它。
每当您到达主要活动时。 它将通过getter方法检查Application类中是否有上下文。
如果是,并且是登录活动,则进行context.finish,这将通过从Main Activity中删除登录活动来清除后堆栈。 并在Application类中将空值设置为setter。
随时分享对此的任何关注。 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.