В StackOverflow есть много вопросов, связанных со стеком действий, но я не видел ни одного ответа на вопрос, который у меня есть. Я работаю на онлайн-игры, что (в настоящее время) имеет 3 различные виды деятельности:Доступ к стек активности Android из асинхронного потока?
- Вход/Регистрация
- меню (видно, когда вошли в систему, включает в себя «новая игра», «моя статистика», и несколько других вещей ... Я просто беспокоюсь о возможности «новая игра» на данный момент.)
- игр
гнезда подключение происходит логин/регистрация деятельности, который создает собственный сервис, который работает на заднем фоне. Поскольку данные могут поступать в любую точку, класс сокета, который я использую, имеет обработчики асинхронного ответа. Это означает, что я не буду иметь доступ к текущему контексту всякий раз, когда будет получено сообщение.
Мне нужен способ выяснить, что представляет собой текущий контекст при получении различных типов сообщений, чтобы я мог обрабатывать сообщение соответствующим образом. Например, если пользователь достиг экрана игры (№ 3 выше) и получает одно сообщение, он должен просто сказать игровому экрану обновить с новым игровым состоянием. Тем не менее, пользователь может находиться на одном и том же экране игры и получать сообщение другого типа, в котором говорится «закрыть экраны № 3 и № 2 и вывести пользователя из системы, возвращая их на экран №1».
В принципе, я пытаюсь найти лучший способ получить текущую деятельность/контекст, определить, является ли он правильным контекстом для текущего сообщения и как его обрабатывать.
Это звучит как очень плохой способ реализации вашей игры. Вы, по сути, полагаетесь на сервер, чтобы диктовать все. Вероятно, вам стоит подумать о перепроектировании на основе запросов/ответов. Удержание соединения сокета, открытого для этого долго, обычно является отличным местом для отказа вашего приложения. – Falmarri
Вот что я пытаюсь сделать - дизайн основан на запросах/ответах. Почему я хочу закрыть соединение между каждым запросом, если у каждого пользователя есть только 20-30 секунд, чтобы сделать движение друг против друга во время матча? –