アプリケーションのすべてのアクティビティで、ユーザーが表示するにはログインする必要があります。ユーザーはほとんどすべてのアクティビティからログアウトできます。これはアプリケーションの要件です。ユーザーがログアウトした場合はいつでも、ユーザーをLoginに送信しますActivity
。この時点で、このアクティビティを履歴スタックの一番下にして、「戻る」ボタンを押すとユーザーがAndroidのホーム画面に戻るようにしたいと思います。
この質問がいくつかの異なる場所で質問され、すべて同じような回答で回答されているのを見てきました(ここで概要を説明します)が、フィードバックを収集するためにここでポーズをとりたいと思います。
ドキュメントに概要が示されIntent
てFLAG_ACTIVITY_CLEAR_TOP
いるようにフラグを設定してログインアクティビティを開こうとしましたが、ログインアクティビティを履歴スタックの最下部に配置し、ユーザーが戻るのを防ぐという私の目標を達成していません以前に表示されたログインアクティビティに。android:launchMode="singleTop"
マニフェストのLoginアクティビティにも使用しようとしましたが、これも私の目的を達成しません(とにかく効果がないようです)。
履歴スタックをクリアするか、以前に開いたアクティビティをすべて完了する必要があると思います。
1つのオプションは、各アクティビティのonCreate
ログインステータスをチェックし、ログインしてfinish()
いない場合はチェックすることです。私はこのオプションが好きではありません。アクティビティが閉じたときに戻るボタンが引き続き使用できるためです。
次のオプションはLinkedList
、どこからでも静的にアクセスできる(おそらく弱い参照を使用する)すべての開いているアクティビティへの参照を維持することです。ログアウト時にこのリストにアクセスして、以前に開いたすべてのアクティビティを繰り返しfinish()
、それぞれのアクティビティを呼び出します。私はおそらくすぐにこのメソッドの実装を開始します。
Intent
しかし、私はこれを達成するためにいくつかのフラグトリックを使用したいと思います。上で概説した2つの方法のいずれかを使用しなくても、アプリケーションの要件を満たすことができると私は嬉しく思います。
Intent
またはマニフェスト設定を使用してこれを達成する方法はありますか、または私の2番目のオプションは、LinkedList
開いているアクティビティを維持することが最良のオプションですか?または、私が完全に見落としている別のオプションはありますか?