我通常创建一个单例辅助类来获取改进实例,以及一个包含所有API调用的单个接口。
这样的事情:
public class RetrofitHelper {
public static API getInstance() {
return ourInstance.client;
// client = retrofit.create(API.class); instantiated only once in singleton constructor
}
}
public interface API {
@POST("api/url")
Observable<ResponseObject> methodOne(@Body RequestBody requestBody);
@GET("api/url/2")
Observable<ResponseObject> methodTwo();
@GET("api/url/3")
Observable<ResponseObject> methodThree();
}
我认为这很好,但每当我看到代码示例时,人们似乎都在为每个/一组API调用和多个改造实例使用单独的接口。
哪种方法正确?这些方法中的任何一种都会以不同方式影响内存/性能吗?
您能参考使用“正确方法”进行改造的项目/代码示例吗?如果它与Retrofit2 + RxJava + MVP架构一起 - 那将是完美的!
谢谢!
答案 0 :(得分:1)
没有人创建多个不是优化方式的实例:
您可以参考以下链接到示例代码,以了解dagger 2改造和MVP:
**NOTE**
Dagger allows you to create a application scope object and use it throughout app, no need to create new instance everytime
编辑:
@Module
public class ApiModule {
@AppScope
@Provides
APIInteface providesRetrofitApiService(Retrofit retrofit) {
return retrofit.create(APIInteface.class);
}
}
获得对象后,您可以使用@Inject APIInterface apiInterface;