それを離れるときにAndroidアクティビティを終了して、戻るボタンからアクセスできないようにする方法は?


130

特定のAndroidアクティビティで、ある時点でユーザーの新しいアクティビティを開始したいと思います。最初のアクティビティを離れて2番目のアクティビティに到達すると、最初のアクティビティは古くなっているので、完全に削除して、[戻る]ボタンから再度アクセスできないようにします。

これを達成するための最良の方法は何ですか?ユーザーが新しいアクティビティを開始した直後に、このアクティビティを強制終了または破棄するにはどうすればよいですか?


この回答を確認してください。
Daniyar

回答:


234

電話するだけです finish()

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();

ありがとうございました。さらに一歩進めるために、私はダイアログウィンドウから新しいアクティビティを開始しています-コードは同じように機能しますか?
JohnRock、2010年

@CaseyBこれに感謝します。しかし、知りたいのですが、はいの場合、サービスからこのメソッドを呼び出すことはできますか?
swiftBoy

1
サービスにはアクティビティがありません。つまり、サービスはアクティビティスタックに含まれず、戻ることはできません。サービスからいくつかのアクティビティを強制終了したい場合は、myActivity.finish();を呼び出すことができるはずです。
CaseyB

3
7年前の回答ですが、Android MとNでも有効です
zeeshan

1
@juztcode onDestroyは、Androidフレームワークからのみ呼び出されることを意図したライフサイクルメソッドです。
CaseyB

106

android:noHistory="true"マニフェストでアクティビティを設定すると、アクティビティがナビゲートされるたびにスタックからアクティビティが削除されます。こちらをご覧ください



8

でタグに追加することもできandroid:noHistory="true"ます。ActivityAndroidManifest.xml

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

7

はい、必要なのは、閉じたいアクティビティでfinish()を呼び出すことだけです。


4

新しいインテントを初期化した後、これを各「新しいアクティビティ」に書き込みます->

Intent i = new Intent(this, yourClass.class);
startActivity(i);
finish();

2

最後に、私は解決策を手に入れました!

私のコンテキストは:-アクティビティが破棄されたときにソケット接続を切断したいのですが、finish()アクティビティを試行しましたが、機能しませんでした

だから私は android.os.Process.killProcess(android.os.Process.myPid()); 自分の活動を殺し、android:excludeFromRecents="true" 最近の活動からの削除に使用しました。


1
この解決策は私にとってはうまくいきましたが、残念ながら空白のページが表示され、ソケット接続を閉じるにはsocket.close();を使用できます。。
Mehrdad

android.os.Process.killProcess(android.os.Process.myPid())アクティビティだけでなく、アプリプロセスも強制終了します。つまり、進行中のサービス(バックグラウンドまたはフォアグラウンド)も停止されます。
Wrichik Basu


0

新しいアクティビティを起動するときは、以下のコードを使用する必要があります。

startActivity(new Intent(this, newactivity.class));
finish();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.