Я компьютерный хобби, который работает над очень маленькой мелочью для платформы Android.Как сохранить объекты данных в Android/Java?
В этой игре я перемещаю плеер между несколькими страницами активности/просмотра (запись, страница вопросов, страница ответов, страница с окончательной оценкой). Я создал объект вопроса, который содержит все данные, относящиеся к одному мелочам (вопрос, четыре ответа, указатель на правильный ответ, связанные комментарии, которые компьютер делает, отвечая на догадку игрока), и я успешно заполнил ArrayList объектов Question с данными, которые я DOM проанализировал из файла XML.
Что такое приемлемый способ передачи этих данных взад и вперед между действиями по мере продвижения игры? Как я могу сохранить эти объекты данных живыми, когда пользователь перемещается по игре?
Я понимаю, что глобальные переменные сильно обескуражены. Я также узнал, что шаблон проектирования Singleton создает многие проблемы, которые, как говорят, связаны с глобальными переменными. Я в тупике, когда дело доходит до поиска альтернатив этим подходам.
Я понимаю основы подхода MVC. Моя активность * .java-файлы - это файлы контроллера, и они связаны с макетами (представлениями), которые я создал с помощью XML. У меня есть два «модельных» объекта, которые необходимо поддерживать и модифицировать по ходу игры: (1) упомянутый выше вопрос-банк ArrayList и (2) какой-то объект «PlayerProgress», содержащий все данные, связанные с прогрессом игрока в игра.
Эти объекты данных сначала создаются в начале игры, но я не знаю, как сохранить их в живых, когда пользователь перемещается между действиями. Я знаю, что я могу передавать информацию между действиями как EXTRAS, но EXTRA, похоже, не предназначены для этой цели. Даже если EXTRAS работал на свойства прогресса игрока, я не думаю, что могу использовать их для передачи ArrayList из 25-50 объектов вопроса между действиями.
Я изучил сериализацию и разборчивость, но кажется странным (и, возможно, неэффективным) в основном разлагать, а затем перекомпоновать объекты модели данных каждый раз, когда пользователь перемещается вперед и назад между различными видами деятельности/видами. Если один из них является приемлемым/общепринятым способом достижения этого, я могу с радостью окунуться вперёд, но сначала мне нужно было проверить с другими.
Я держу голову против этого на разных языках программирования и подозреваю, что есть какая-то большая часть картины, которую я не понимаю. Я прочитал описания жизненных циклов объектов и приложений во многих разных ресурсах, но мне все еще не удалось найти решение этого основного вопроса.
Я задаю этот вопрос («Что является приемлемым способом передачи объектов данных взад и вперед между действиями по мере продвижения игры») в контексте моей глупой игры с пустяками, но я действительно заинтересован в получении обрабатывать большую картинку. Если у людей нет времени, чтобы изложить что-то настолько, казалось бы, базовое, возможно, вы можете указать мне на описания в других книгах, которые вы нашли полезными? (У меня есть несколько слотов, открытых в книжной полке Safari, и вы можете найти копии практически любых технических публикаций.)
Спасибо.
«Я не думаю, что могу использовать их, чтобы передать ArrayList из 25-50 объектов вопроса между действиями». - вы определенно можете, на самом деле, – invertigo
invertigo, у меня создалось впечатление, что EXTRAS являются парами ключ/значение со значениями обычно String или int datatypes. Если одно значение EXTRA может содержать весь ArrayList из 25-50 объектов вопроса, это кажется идеальным. Я изучаю далее, чтобы убедиться, что я не совсем неправильно понял, что мы можем делать с дополнительными функциями. –
вам придется оценивать влияние производительности для вашего собственного прецедента, но я использую serializable extra для хранения списка <> сериализуемых объектов все время – invertigo