Передача данных сразу во все активити

Я передаю каждый раз при переходе большое количество переменных, которые нужны для работы программы. Но их слишком много, и чтобы ни одна переменная не пропала, мне каждый раз ее надо прописывать при переходе. Использую intent для передачи и перехода. Кусок из кода:

        Intent i = new Intent(getApplicationContext(), GameActivity.class);
    i.putExtra("cheats",cheats);
    i.putExtra("showhidebotsandmachinesvalue",showhidebotsandmachinesvalue);
    i.putExtra("alphabuttonvalue",alphabuttonvalue);
    i.putExtra("showhideconsolevalue",showhideconsolevalue);
    i.putExtra("playerhp",playerhp);
    i.putExtra("energy",energy);
    i.putExtra("mymoney",mymoney);
    i.putExtra("mymoney",mymoney);
    i.putExtra("y",y);
    i.putExtra("x",x);
    i.putExtra("location",location);
    i.putExtra("newgame",newgame);
    i.putExtra("savesettings",savesettings);
    startActivity(i);

У меня активити много, и прописывать каждый раз все это неудобно. Есть простой вариант передачи?


Ответы (1 шт):

Автор решения: ЮрийСПб

Решения простого не будет. Если вам надо передавать много данных - придётся передавать.

Можно только как-то защититься от ошибок. Например создать класс, который будет иметь поля для ваших данных и их инициализацию в конструкторе. Соответственно передавать надо будет экземпляр этого класса. Так вам компилятор не даст забыть какой-то параметр. Однако это будет работать только если между активити всегда передаётся один и тот же набор данных. Если они разные, то надо для каждого случая свой класс создавать.

Либо пойти вообще с другой стороны. Например сейчас модно использовать всего одну активити - не будет вообще указанной вами проблемы. Правда, она заменится передачей тех же данных уже во фргменты.

Либо вообще хранить всё это в третьем месте, например в БД. И в каждой активити брать из БД - тогда вообще меж активити ничего передавать не надо.

→ Ссылка