StackOverflowにはアクティビティスタックに関連する質問がたくさんありますが、私が持っている質問に答える質問は実際には見つかりませんでした。私は(今のところ)3つの異なる活動があるオンラインゲームに取り組んでいます:
- ログイン/登録
- メニュー(ログイン時に表示され、「新しいゲーム」、「私の統計」、およびその他のいくつかのものが含まれています...今のところ「新しいゲーム」オプションについて心配しています。)
- ゲーム
ソケット接続は、ログイン/登録アクティビティで発生します。これにより、バックグラウンドで実行されるカスタムサービスが作成されます。データはいつでも到着する可能性があるため、私が使用しているソケットクラスには非同期応答ハンドラーがあります。これは、メッセージを受信するたびに現在のコンテキストにアクセスできないことを意味します。
さまざまな種類のメッセージを受信したときの現在のコンテキストを把握して、それに応じてメッセージを処理できるようにする方法が必要です。たとえば、ユーザーがゲーム画面(上記の#3)に到達し、ある種のメッセージを受け取った場合、新しいゲーム状態で更新するようにゲーム画面に指示するだけです。ただし、ユーザーが同じゲーム画面にいて、「画面#3と#2を閉じてユーザーをログアウトし、画面#1に戻す」という別の種類のメッセージを受信する可能性があります。
基本的に、私は現在のアクティビティ/コンテキストを取得するための最良の方法を見つけ出し、それが現在のメッセージに適切なコンテキストであるかどうかを判断し、それを処理する方法を見つけようとしています。