我在一个多模块项目中使用Hilt,并且具有一个范围为df = (df.groupby([pd.Grouper(key='Date', freq='W-MON'), 'Store', 'Department', 'Employee'])
.size()
.sort_index(level=['Store', 'Department', 'Employee', 'Date'])
.unstack(['Store', 'Department', 'Employee']).fillna(0))
Out[1]:
Store Store1 Store2 Store3 \
Department dep1 dep2 dep1 dep2 dep1
Employee aemp bemp cemp demp aemp eemp femp cemp demp gemp bemp eemp
Date
2020-08-03 1.0 1.0 2.0 3.0 1.0 1.0 2.0 0.0 1.0 1.0 2.0 1.0
2020-08-10 1.0 1.0 0.0 4.0 1.0 2.0 1.0 1.0 1.0 2.0 1.0 1.0
Store
Department dep2
Employee demp
Date
2020-08-03 1.0
2020-08-10 1.0
的模块。我希望此模块提供的所有内容都像一个单例,并且在应用程序的生命周期中仅创建一次。但是,我看到提供的类的构造函数在每个活动中都被调用一次。这是一个测试设置:
MyModule.java:
ApplicationComponent
MyApplication.java:
@Module
@InstallIn(ApplicationComponent.class)
public abstract class MyModule {
@Binds
public abstract Foo providesDomain(MyFoo domain);
}
每个活动:
@HiltAndroidApp
public class MyApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
MyFoo.java:
@AndroidEntryPoint
public class MyActivity extends AppCompatActivity {
@Inject
Foo foo;
对于每个活动,将调用MyFoo构造函数,但应用程序相同。我的理解是,class MyFoo implements Foo {
@Inject
public MyFoo(@NonNull Application application) {
Log.w("TEST", "My application: " + application);
}
}
范围内的模块不应发生这种情况。为什么要重新创建MyFoo?
答案 0 :(得分:1)
我将自己指向the relevant Android documentation:该类本身需要使用范围进行注释。
在上面的示例中,MyFoo
仅在应用程序范围内被这样注释:
@Singleton
class MyFoo implements Foo {
@Inject
public MyFoo(@NonNull Application application) {
Log.w("TEST", "My application: " + application);
}
}