2012-02-24 14 views
0

我试图接近这里所描述的使用方式活动整个堆栈:关闭在Android的整个活动堆栈不带图形问题

How to kill an application with all its activities?

也就是说,每次活动开始与startActivityForResult另外一个,并在onActivityResult中调用finish()来关闭它自己以及它打开的活动。

的问题是,在任务活动似乎仍然重绘自己至少一次,他们关闭之前,这并不好看。关闭最顶端的活动后,可以看到所有以前打开的活动,例如以非常快速的幻灯片放映。

如何避免此图形问题?

编辑:我需要的是,如果用户按下HOME键,然后按下发射器中的应用程序的图标,他再次返回堆栈的当前状态,而不是最先的活动。所以,从我所了解的情况来看,有了这样的要求,我无法在开始下一个活动之前完成()活动。

回答

1

这是原生的行为,意在用户体验,以帮助。当一个Activity以startActivityForResult开始,然后完成时,它会(在允许花哨动画的设备上)自动滑落。这有助于人们不会为屏幕突然改变而感到惊讶。

你可以尝试启动活动没有startActivityForResult和处理数据的传递,并从活动手动,然后处理如何/当活动结束()和活动,他们传回。你可能会发现你实现了一些活动实际上始终传递给相应活动的东西,而不是回到堆栈上的活动。

+0

+1的信息:“当一个活动启动与startActivityForResult,然后完成后,它会(在允许花哨动画的设备上)自动滑走。“ startActivity不? – 2013-08-06 17:27:23

0
Intent intent = new Intent(); 
       intent.setClass(getApplicationContext(), 
         PhoneListCheckboxAES.class); 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(intent); 
       finish(); 

如果你给这样当u开始下一个活动,然后在图形问题不会发生

+0

有没有办法做到这一点,而无需自己调用finish()?因为当然如果你打电话给finish(),这将不会是一堆活动和图形问题。但我需要的是,如果用户按下HOME按钮然后又回来了,他会返回到堆栈的当前状态,而不是再次的第一个活动。 – iseeall 2012-02-25 23:32:42