如何销毁除最新的 3 个以外的所有活动?
how to destroy all the activites except the latest 3?
我有 A->B->C->D 这样的活动。如果我的堆栈中有 4 个活动,我该如何关闭 A activity?稍后当我打开 activity E 时,我也希望 B 也关闭,所以我只想拥有 C->D->E。
开始时activity使用
startActivityForResult(intent,code);//different code for all activity
并致电
finishActivity(code);//which activity do you want to close?
您可以拨打:
finish();
之后:
startActivity(intent);
在您要关闭的每个 activity 中,当您打开另一个 activity 时。
没有直接 方法来管理堆栈中的活动数。到目前为止,我知道堆栈与可用内存一样大。
还要考虑 LaunchMode 以及 Activity 是否在同一个任务中。
因此,您可以实施自己的 Activity 管理器来完成不需要的活动。
以下是我对解决方案的简要看法:
- 创建一个模型来存储 activity,它在堆栈中的索引,日期 ..i.e.
ActivityItem
- 在您的自定义应用程序中创建一个
ActivityItem
的空列表。为避免内存泄漏,请使用 WeakReference
。创建 public setter adActivity
以添加和管理活动
- 更好的方法来创建 activity 基础 class 并将其作为超类重用,无论您想要管理 运行 活动的数量。而不是为每个不同的 activity.
重复相同的实现
- OnCreate 在你的基地 Activity 调用
adActivity
并传递电流 activity.
adActivity
作业首先是清除已销毁活动的列表。谢谢WeakReference
。然后手动终止列表中最后 3 个项目之前的旧活动。它看起来并不容易.. 例如:SingleInstance
和轮换将使实现这一目标变得具有挑战性:-)
就是这样。
祝你好运,'。
我有 A->B->C->D 这样的活动。如果我的堆栈中有 4 个活动,我该如何关闭 A activity?稍后当我打开 activity E 时,我也希望 B 也关闭,所以我只想拥有 C->D->E。
开始时activity使用
startActivityForResult(intent,code);//different code for all activity
并致电
finishActivity(code);//which activity do you want to close?
您可以拨打:
finish();
之后:
startActivity(intent);
在您要关闭的每个 activity 中,当您打开另一个 activity 时。
没有直接 方法来管理堆栈中的活动数。到目前为止,我知道堆栈与可用内存一样大。
还要考虑 LaunchMode 以及 Activity 是否在同一个任务中。
因此,您可以实施自己的 Activity 管理器来完成不需要的活动。
以下是我对解决方案的简要看法:
- 创建一个模型来存储 activity,它在堆栈中的索引,日期 ..i.e.
ActivityItem
- 在您的自定义应用程序中创建一个
ActivityItem
的空列表。为避免内存泄漏,请使用WeakReference
。创建 public setteradActivity
以添加和管理活动 - 更好的方法来创建 activity 基础 class 并将其作为超类重用,无论您想要管理 运行 活动的数量。而不是为每个不同的 activity. 重复相同的实现
- OnCreate 在你的基地 Activity 调用
adActivity
并传递电流 activity. adActivity
作业首先是清除已销毁活动的列表。谢谢WeakReference
。然后手动终止列表中最后 3 个项目之前的旧活动。它看起来并不容易.. 例如:SingleInstance
和轮换将使实现这一目标变得具有挑战性:-)
就是这样。
祝你好运,'。