Восстанавливает ли RoboGuice ранее созданные объекты при вызове onCreate()
Моя активность вводится с несколькими объектами, которые инициализируются до первого вызова onCreate. Когда моя активность заканчивается, вызывая метод finish, она проходит через onDestroy, прежде чем вернуться в главное окно "Рабочий стол ОС". Затем я снова вызываю свое приложение, и снова вызывается onCreate. На этот раз, хотя мой взгляд остается таким же, как когда финиш был изначально назван выше. Поэтому мне интересно, если RoboGuice повторно создает экземпляры внедренных объектов? Если нет, есть ли способ для меня это сделать? Благодарю.
2 ответа
Вы говорите, что они не восстановлены тогда?
когда onCreate() вызывается ex. при изменении ориентации телефона каждый объект вводится еще раз. Но если один из внедренных объектов является Singleton, будет введен тот же экземпляр объекта. "Синглтон" работает в рамках всего приложения, поэтому жизненный цикл действия не влияет на объекты signleton.
Взгляните на документы по жизненному циклу активности Android.
Если onCreate вызывается из Android, то создается новый экземпляр вашей активности, и создаются экземпляры не-одиночных компонентов, а все компоненты вводятся с помощью roboguice.
Если вам нужен только один экземпляр компонента, вы можете сделать его одиночным. Просто будьте осторожны с использованием памяти синглетами, потому что они будут жить в течение всего процесса подачи заявки. Таким образом, даже если действие было уничтожено, но процесс вашего приложения все еще выполняется, эти синглтоны будут занимать память.
Roboguice - это просто обёртка вокруг обмана. Если вы заинтересованы в поиске других вариантов получения экземпляров классов, взгляните на Bindings, Scopes и Providers.