我想实现Repository
模块来处理数据操作。我在row
目录中有JSON文件,并希望创建具体的Repository
实现来从文件中获取数据。我不确定我是否可以在Context
的构造函数或方法中使用Repository
作为属性。
e.g。
public class UserRepository {
UserRepository() {}
public List<User> loadUserFromFile(Context contex) {
return parseResource(context, R.raw.users);
}
}
答案 0 :(得分:2)
我没有看到将上下文作为属性传递有任何伤害。如果您不喜欢这个想法,那么您可以通过方便的方法检索上下文:Static way to get 'Context' on Android?
答案 1 :(得分:2)
恕我直言,您应该使用像Dagger2这样的DI(依赖注入)来为Context
提供类似的内容,
<强> AppModule.class 强>
@Module
public class AppModule {
private Context context;
public AppModule(@NonNull Context context) {
this.context = context;
}
@Singleton
@Provides
@NonNull
public Context provideContext(){
return context;
}
}
<强> MyApplication.class 强>
public class MyApplication extends Application {
private static AppComponent appComponent;
public static AppComponent getAppComponent() {
return appComponent;
}
@Override
public void onCreate() {
super.onCreate();
appComponent = buildComponent();
}
public AppComponent buildComponent(){
return DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}
}
<强> UserRepository.class 强>
@Singleton
public class UserRepository {
UserRepository() {}
@Inject
public List<User> loadUserFromFile(Context contex) {
return parseResource(context, R.raw.users);
}
}
快乐编码.. !!