我正在尝试使用此处描述的方式关闭一大堆活动:
How to kill an application with all its activities?
即,每个活动都使用startActivityForResult启动另一个活动,并且在onActivityResult中调用finish()以将其自身与其打开的活动一起关闭。
问题在于任务中的活动在关闭之前似乎仍然至少重画一次,这看起来不太好。关闭最顶层的活动后,可以看到所有先前打开的活动,例如非常快速的幻灯片放映。
如何避免这种图形问题?
编辑:如果用户按下HOME按钮,然后在启动器中按下应用程序的图标,我需要返回到堆栈的当前状态,而不是再次返回第一个活动。所以,根据我的理解,有了这样的要求,我无法在开始下一个活动之前完成()活动。
答案 0 :(得分:1)
这是本机行为,旨在帮助用户体验。当使用startActivityForResult启动Activity然后完成时,它将(在允许使用精美动画的设备上)自动滑出。这有助于人们不会因屏幕突然变化而感到惊讶。
您可以尝试在没有startActivityForResult的情况下启动活动,并手动处理与活动之间的数据传递,然后处理活动完成()以及它们传递回的活动的方式/时间。您可能会发现实现了活动实际上一直传递给相应活动的东西,而不是回到堆栈上的活动。
答案 1 :(得分:0)
Intent intent = new Intent();
intent.setClass(getApplicationContext(),
PhoneListCheckboxAES.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
如果您在开始下一个活动时给出这样的话,那么图形问题将不会发生