Когда (и когда нет) передавать контекст активности в Android
- Почему в хорошем дизайне шаблонов следует вставлять Контекст вместо объекта активность?
- Так ли это? достаточное количество аннотаций @ActivityContext, или нам следует также указать аннотацию @ActivityScoped?
- Если мы просто добавим @ActivityScoped, как помощник по разрешению ниже, и мы забыли добавить @ActivityContext, будет ли Hilt или Dagger ограничивать их зависимости автоматически, или я должен гарантировать Hilt, что этот контекст является контекстом активности и привязан к действию, внедренному в этот объект ?
- Позволит ли Dagger смешивать области видимости, например класс меню? GPT в чате отвечает, что позволяет смешивать области, но я в этом сомневаюсь. Как я узнал из курса Василия Зуканова, объекты ограничивают свои зависимости.
Это некоторые объекты, связанные с пользовательским интерфейсом, которые были внедрены в hilt, дизайн которых является хорошей практикой и которого следует избегать в Hilt
///нет области действия
//это может быть ограничено действием, внедренным в этот объект
//это означает, что при воссоздании этого действия будет использоваться новый экземпляр //но мы предоставить контекст активности
///это будет связано с жизненным циклом активности
public class PermissionHelper {
private final Context mActivity;
@Inject
public PermissionHelper(@ActivityContext Context activity) {
this.mActivity = activity;
}
}
///@ActivityScoped //это может быть ограничено активностью, внедренной в этот объект, что означает, что при воссоздании этой активности будет использоваться тот же экземпляр ///но мы забываем добавить @ActivityContext сам поймет это
@ActivityScoped
public class PermissionHelper {
private final Context mActivity;
@Inject
public PermissionHelper(Context activity) {
this.mActivity = activity;
}
}
//Меню — @ActivityScoped, а общие ссылки — @Singleton // кинжал позволит смешивать области действия
@ActivityScoped
public class Menuu extends BaseObservablee {
@Inject
public Menuu(Context context, SharedPref sharedPreferences) {
applicationcontext = context;
this.sharedPref = sharedPreferences;
}}
Подробнее здесь: https://stackoverflow.com/questions/786 ... on-in-hilt