2

インテントを作成するとき:

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

新しいインテントを作成しましたが、最後のインテントは破棄
されません。まだメモリ内にあります
。この最後の破棄を強制終了するにはどうすればよいですか?

したがって、2つの異なるクラスで2つのインテントを作成したいと思います。最初のクラスでは、次のように記述します。

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

そして2番目のクラスで私はこれを書きます:

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

ただし、in1をクリックすると、in1が作成され、in2が破棄されます。また、in2をクリックすると、in2が作成され、in1が破棄されます。

私の電話のメモリをきれいにしたい。

4

4 に答える 4

9

Activity次のように戻るキーの機能をオーバーライドすることで、ユーザーが前に進むのを防ぐことができます。

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

このアプローチは推奨されませんが、誰もが知っているActivityように、メモリ要件などの特定の側面が発生すると、 は自動的に強制終了されます。Activity自由意志で破壊することはできません。

ただし、ウェルカム スプラッシュ スクリーンなどの特定のケースでは、次の 2 つのいずれかを行うことができます。

1)新しいものに移動するときfinish()に、現在のメソッドを呼び出します(通常、を使用するときに行われます)。ActivityActivityThread

2) で以下を使用しますmanifest

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

Activityこれにより、これをActivityスタックに保持しないようにデバイスに指示します。

于 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 に答える