Хранение данных в Application Android

248
01 февраля 2018, 18:15

Пишу игру под Аndroid.

У меня есть класс игры, в нем содержатся все данные. Сами данные я храню в файле. То есть у меня есть вспомогательный класс, который умеет воссоздавать из текстового файла класс игры и наоборот записывать из данные в файл из класса игры.

Чего я хочу добиться. Я хочу, чтобы у меня был всего 1 класс игру и он создавался бы в методе onCreate() класса Application. Класс игры должен храниться именно в этом классе, ибо используется во многих Activity. После каждого изменения вызывать метод, который записывает измененный класс игры в файл выходит слишком затратно в плане времени.

Я подозреваю, что в классе Application есть какой-то метод, который вызывается при уничтожении этого объекта, то есть уничтожения самого приложения. И вот в этом методе мне и хотелось бы один раз загрузить на файл измененный класс игры.

Однако я все никак не могу понять что это за метод есть подозрения, что это либо

onTrimMemory(int level)

либо

onLowMemory()

Помогите решить вопрос, пожалуйста.

Answer 1

То, что вы хотите делать это очень плохая практика и со стороны структуры и со стороны поддержки кода и конечно же самой системы Android. Более того в Application классе нет такого метода (в дебаге есть), но есть воркэраунды, которые частично могут решить вашу проблему. Например: вы можете отслеживать жизненный цикл во всех Activity (Или создать свой базовый) или снимать StaceTrace из AcctivityManager там есть что-то вроде GET_TASK. Сделать логику например если нет тасок то можно считать, что приложение закрыто. Но опять это не стандартное поведение и я уверяю, что будут подводные камни в поведении самой системы.

Решение вашей задачи на самом деле простое это БД, действительно писать изменения данных в асинхронном порядке в БД это микрооперация, и потом уже дампить при необходимости в какой-то файл, если будет необходимость.

READ ALSO
Авторизация с Selenium WebDriver через cookie

Авторизация с Selenium WebDriver через cookie

Необходимо реализовать авторизацию с Selenium WebDriver так что-бы не вводить логин и пароль для сайтов каждый раз при запускеТоесть нужно сэмитировать...

420
Параметр ServletContextHandler.SESSIONS в Jetty

Параметр ServletContextHandler.SESSIONS в Jetty

ЗдравствуйтеПодскажите, пожалуйста, на что влияет параметр options конструктора ServletContextHandler(int options)

253
Spring Boot: Hibernate не рисует таблицы

Spring Boot: Hibernate не рисует таблицы

Собираю первый проект на Spring Boot

364