Предлагаю создать класс модели (назовем его MyModel
) и создать объект этого класса в Application.onCreate
(не Activity.onCreate
).
После этого добавления геттера для того, чтобы вы могли получить эту модель из любого Activity
или Service
как это:
MyApplication app = (MyApplication) getApplication();
MyModel model = app.getMyModel();
User user = model.getCurrentUser();
и т.д.
также создание BaseActivity
класса может спасти вас вводить, если вы создаете метод protected MyModel getModel()
, который возвращает модель из первых двух строк кода выше.
Edit:
Вам нужно создать класс, который расширяет Application
и зарегистрировать этот класс в AndroidManifest.xml
.
Это как: https://stackoverflow.com/a/2929927/2183804
Edit (около одноплодной):
Это называется антишаблоном (не только на Android). В Android я видел людей, заканчивающихся синглоном с помощью аксессуаров, таких как MySingleton.getInstance (Context), потому что им все равно нужен контекст, например. для доступа SharedPrefs или DB. Для этого используется приложение, поэтому нет необходимости создавать дополнительную хакерскую сущность, которая может быть использована неверно: MySingleton.getInstance (null) из места, где нет контекста. Это может привести к NPE после того, как процесс будет убит и перезапущен.
Как вы хотите использовать медиатор? Вы, вероятно, хотите избежать синглтона. –
@ MaciejGórski, например, у меня есть объект пользователя, о котором должны знать все мои действия. И почему я хочу избежать синглтона? –