2017-06-02 51 views
0

在我制作的应用程序中,有12个不同的活动链接到主页面。他们都是彼此独立的。我希望从后端堆栈中删除以前的活动,以便应用程序占用更少的内存。 我设法让每个活动的单个实例使用如何在Android中设置后台堆栈中的活动限制?

android:launchMode = "singleInstance" 

但仍当这些活动从主页开始,12个不同的页面去后退堆栈和应用程序崩溃。 什么是解决方法?

+0

尝试增加Intent.FLAG_ACTIVITY_NO_HISTORY); 这个标志,当你从一个活动另一个去......这个东西,你可以在清单中定义以及 – santoXme

回答

0

听起来像android:noHistory =“true”将是您的解决方案。

值为“true”表示该活动不会留下历史迹线 。它不会保留在任务的活动堆栈中,因此 用户将无法返回到该堆栈。

How does android:noHistory="true" work?

+0

'android:noHistory =“true”' 似乎不工作得很好。我的意思是分配的内存甚至还在开放活动中上升。如果我在两次活动之间切换几次,内存会不断上升(每次活动调用大约20MB),直到应用程序崩溃到180MB。如果没有历史活动在背后,这不应该发生。 –

0
当你回到启动MainActivty

,12个activitys称之为上backpress。

Intent intent = new Intent(youeActivity.this,MainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);  
startActivity(intent); 
finish(); 

manofest添加这一个

android:excludeFromRecents="true"