如何正确删除活动

时间:2014-02-02 21:18:23

标签: android memory-management android-activity

我写了一个Android应用程序。

所以,这就是:

  1. 我有一个列表视图,如果用户点击特定行,则会调用以下代码来创建活动:

    Intent intent = new Intent();
    intent.setClassName( getPackageName(), getPackageName() + ".matchView.MatchViewActivity" );
    intent.putExtra("leagueId", leagueId );
    startActivity( intent );
    
  2. 然后活动开始,我们假设用户通过点击后退按钮返回列表视图

  3. 现在他再次进入Listview并再次点击相同的单元格,以便再次启动相同的活动。
  4. 然而,问题在于,当我启动活动并使用后退按钮返回时,(现在旧的)活动未被释放。它仍然在后台运行,如果用户再次点击同一个单元格,则再次启动相同的活动,导致相同的活动运行2,3,4个等等(取决于用户点击的频率)。

    因此,如果用户点击后退按钮,我如何确保我开始的活动被正确删除或结束?

4 个答案:

答案 0 :(得分:1)

如果您没有对其进行任何引用,

Activity将被系统自动删除(当您返回时)。

更好地了解activitiesback stack

答案 1 :(得分:1)

如果您不想再使用Activity,请回答您的问题,正确的方法是致电finish()

这告诉Android SO您不想再次使用它,但不要指望它立即完成。 Android在完成后的一段时间内保留了对实例和活动(这些也是实例)的引用,如果用户在短时间内重新打开该活动,它恢复得更快。

如果您担心重新打开活动的状态,可以强制每次重新打开活动时重新启动活动。您可以在Intent参考页中找到更多参考文献,尤其是FLAG_ACTIVITY_CLEAR_TOP flag

答案 2 :(得分:0)

您可以在清单中根据" launchMode"定义活动的启动方式,您可以从四种启动模式中选择一种:

  • "标准"
  • " singleTop"
  • " singleTask"
  • " singleInstance"

听起来你想要使用," singleTask"或者" singleInstance",您可以在" android:launchMode"下阅读更多信息。部分:

http://developer.android.com/guide/topics/manifest/activity-element.html

答案 3 :(得分:0)

添加完成();在启动新活动后删除当前活动。