2

当我创建一个意图时:

Intent in = new Intent(this, myclass.class);
this.startActivity(in);

我创建了一个新的 Intent,但最后一个 Intent 没有销毁
它仍在内存
中我怎样才能杀死最后一个销毁?

所以我想在两个不同的类中创建两个意图:在第一类中我写了这个:

Intent in1 = new Intent(this, myclass2.class);
this.startActivity(in);

在第二堂课我写这个:

Intent in2 = new Intent(this, myclass1.class);
this.startActivity(in2);

但是当我单击 in1 将创建并且 in2 将销毁,当我单击 in2 时 in2 将创建并且 in1 将销毁。

一个想清理我的手机内存。

4

4 回答 4

9

Activity您可以通过覆盖后退键功能来阻止用户继续上一个,如下所示:

public void onBackPressed() {
       //doing nothing on pressing Back key
       return;
    }

虽然不鼓励这种方法。众所周知,Activity当某些方面出现如内存要求时,将自动终止。你不能随意摧毁一个Activity

尽管对于像欢迎启动屏幕这样的特定情况,您可以执行以下两件事之一:

1)当你移动到你的新时调用finish()你当前的方法(通常在使用时完成)。ActivityActivityThread

2)在你的使用以下manifest

<activity android:name=".WelcomeScreen" android:noHistory="true" ... />

这将告诉设备不要将其保留ActivityActivity堆栈中。

于 2012-05-14T17:56:08.273 回答
2

活动会一直保留在内存中,直到 Android 决定应该将其删除。别担心。当需要更多内存时,它将被销毁。在您的主要活动使用它之前,它实际上是“未使用”的内存。

于 2012-05-14T16:37:09.853 回答
1

我不确定你的问题……你想开始一个新的活动并破坏之前的活动?如果这是您需要的,您可以使用:

startActivity(new Intent(this, myActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

“CLEAR_TOP”标志告诉“嘿!我想开始这个活动并杀死所有其他人!”

于 2012-05-14T16:35:41.820 回答
0

由于 Android 运行时环境使用垃圾收集(就像“传统”Java 一样),因此在大多数情况下您无需担心手动销毁对象。Intent如果系统需要额外空间来存放新对象,则未使用对象占用的内存将被回收。

于 2012-05-14T17:10:34.353 回答