タグ付けされた質問 「activity-lifecycle」

15
履歴スタックからのアクティビティの削除
私のアプリは、ユーザーが初めてアプリを実行したときに、次のようなサインアップアクティビティを表示します。 ActivitySplashScreen(ゲームへようこそ、アカウントにサインアップしますか?) ActivitySplashScreenSignUp(素晴らしい、この情報を記入してください) ActivityGameMain(メインゲーム画面) そのため、ユーザーが各画面のボタンをクリックすると、アクティビティはその順序で互いに起動します。 ユーザーがアクティビティ#2から#3に移動したときに、履歴スタックから#1と#2を完全に消去できますか?ユーザーが#3にいて、戻るボタンを押すと、スプラッシュ画面に戻るのではなく、ホーム画面に移動するようにしたいと思います。 タスクでこれを達成できると思います(つまり、#3で新しいタスクを開始する)が、もっと簡単な方法があるかどうかを確認したかったのですが、 ありがとう

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

12
Activity.finish()メソッドは正確に何をしているのですか?
私はしばらくAndroidアプリケーションを開発しており、アクティビティのライフサイクルとアプリケーションのライフサイクルに関する多くの投稿をフォローしています。 Activity.finish()メソッドがのどこかで呼び出され、Activity.onDestroy()スタックからアクティビティが削除されることも知っています。オペレーティングシステムとガベージコレクターが「トリックを実行」してメモリを解放できるのは、それが良い時間だとわかったときだと思います。そう.... 私はこの投稿に来ました- アプリケーションを終了することは眉をひそめていますか?マーク・マーフィーの答えを読んでください。 そのfinish()方法が実際に何をしているのかについて少し混乱しました。 電話をかけfinish()てonDestroy()もらえない可能性はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.