【问题标题】:How to set the limit of activities in back stack in Android?如何在Android中设置后台堆栈中的活动限制?
【发布时间】:2017-06-02 07:25:08
【问题描述】:

在我正在制作的应用程序中,有 12 个不同的活动链接到主页。它们都是相互独立的。我希望从后台堆栈中删除以前的活动,以便应用程序占用更少的内存。 我已经设法通过使用

来拥有每个活动的单个实例
android:launchMode = "singleInstance"

但是当这些活动从主页启动时,12 个不同的页面进入后台堆栈并且应用程序崩溃。 解决方法是什么?

【问题讨论】:

  • 尝试添加 Intent.FLAG_ACTIVITY_NO_HISTORY);当你从一个活动去另一个活动时这个标志......你也可以在清单中定义这个东西

标签: android performance


【解决方案1】:

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

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

How does android:noHistory="true" work?

【讨论】:

  • android:noHistory = "true" 似乎不太好用。我的意思是分配的内存仍然在增加,即使是开放活动。如果我在两个活动之间切换几次,内存会不断增加(每个活动调用约 20MB),直到应用程序在 180MB 崩溃。如果 backstack 中没有活动历史记录,则不应该发生这种情况。
【解决方案2】:

当你回去启动 MainActivty 时,在 12 个活动上调用它。

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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多