Я хотел бы знать, какой контекст Roboguice вводит, это контекст приложения или текущая активность?В каком контексте вводится roboguice?
Я пытаюсь использовать Roboguice и Robospice. Я вставляю Robosice SpiceManager
в фрагмент, но фрагмент не знает о SpiceManager
, он видит его через интерфейс, скажем MyInterface
.
public class MyFragment extends RoboFragment {
//this is where the SpiceManager gets injected
@Inject MyInterface manager;
...
}
//this is the implementation that I'm going to inject
//it is simultaneously an event listener for the fragment's life cycle events so that the
//SpiceManager can be appropriately started and stopped.
public class MyManager implements MyInterface {
private SpiceManager spiceManager = new SpiceManager(MySpiceService.class);
//Which context will get injected here? How can I make Roboguice inject a specific context that I want, for example, a specific activity that I want.
private @Inject Context context;
//Here, I need to start the SpiceManager
public void myFragmentOnStart(@Observes OnStartEvent onStart) {
//SpiceManager requires a context, more specifically an activity which will be destroyed and then garbage collected, so It shouldn't be an application context because the resources SpiceManager uses will never be released.
spiceManager.start(context);
}
public void myFragmentOnStop(@Observes OnStopEvent onStop){
if (spiceManager.isStarted()) {
spiceManager.shouldStop();
}
}
}
Мои вопросы:
Может RoboGuice наблюдать фрагмент события рядом активность событий, документация не ясно?
Правильно ли я считаю, что SpiceManager нуждается в контексте, который будет уничтожен при уничтожении фрагмента/активности? Я посмотрел код SpiceManager.start(Context context)
и он создает WeakReference
с переданным Context
.
Как я могу заставить RoboGuice ввести конкретный Context/Activity
?
Можно ли это сделать без MyFragment
зная, что объект MyInterface
, который он использует, нуждается в Context
?
Кстати, я обнаружил, что OnStopEvent
имеет метод getActivity()
, поэтому нет никаких проблем получать Activity
в onStop
, но OnStartEvent
это просто пустой класс.