2011-09-12 10 views
50

誰かが本当に簡単な方法で私を説明できますか?FLAG_ACTIVITY_CLEAR_TOPはどういう意味ですか?私はそれについてたくさんの質問があることを知っていますが、答えのどれも私を満足させていません。誰かがこのフラグが有用な例を与えることもできますか?ありがとう。AndroidのFLAG_ACTIVITY_CLEAR_TOP

+0

このリンクを参照してくださいhttp://stackoverflow.com/questions/4342761/how-do-you-use-intent-flag-activity-clear-top-to-clear-the-activity-stack説明する....................... http://mgmblog.com/2010/07/22/go-home-feature-with-flag_activity_clear_top/ –

+0

http ://stackoverflow.com/a/237186​​78/513413 – Hesam

答えて

77

同じの詳細については、以下のリンクをご確認ください:あなたは4つの活動、A、B、C、およびDを持っているとしましょう、との流れは次のとおりです。

http://developer.android.com/reference/android/content/Intent.html

を何それが意味することです

A - > B - > C - > D

、あなたがDにあるとき今、あなたは(スタックではなく、新しいインスタンスからの)活動Bを開始したい、あなたは、この目的のフラグを使用することができます。また、それは、B(ここではCとD)の上にある他のすべてのアクティビティを削除することです。

リアルタイムの例では、活動とのメールアプリになり ReadMailInInbox - > OpenMailFullScreen - > ReplyMailあなたのメールに返信後、あなたは文句を言わない、むしろあなたができるように、一番上に来るようにあなたのReadMailInInbox活動をしたいと思うバックOpenMailFullScreenに行きたいですフラグをFLAG_ACTIVITY_CLEAR_TOPに設定してインテントを渡して、このアクティビティを開始します。

これが役に立ちます。

+0

ありがとうございました!推測すると、私はついにこの旗が何をするのか理解した。 – lomza

+22

@Devaだから、あなたの例によると、あなたが言ったように、すでに存在するアクティビティBのインスタンスに戻った後。アクティビティCとDがスタックからクリアされているはずです。アクティビティBのボタンを押すとテストしたように、アクティビティDはまだ表示されています。どうして? – anonim

+2

@anonim、考えられる問題は 'launchMode'にあります。 'singleInstance'の代わりに' singleTask'を使う必要があります。完璧な説明はこちらhttp://stackoverflow.com/a/36111557/1219012 –

関連する問題