Android 改装2接口-正确的方法?
我对如何正确编写代码有点偏执。到目前为止,我已经在很多项目(Android应用程序)中使用了改型 我通常创建一个singleton助手类来获取改造实例,并创建一个包含所有API调用的接口 大概是这样的:Android 改装2接口-正确的方法?,android,optimization,retrofit,retrofit2,Android,Optimization,Retrofit,Retrofit2,我对如何正确编写代码有点偏执。到目前为止,我已经在很多项目(Android应用程序)中使用了改型 我通常创建一个singleton助手类来获取改造实例,并创建一个包含所有API调用的接口 大概是这样的: public class RetrofitHelper { public static API getInstance() { return ourInstance.client; // client = retrofit.create(API.class
public class RetrofitHelper {
public static API getInstance() {
return ourInstance.client;
// client = retrofit.create(API.class); instantiated only once in singleton constructor
}
}
公共接口API{
@POST(“api/url”)
可观察的methodOne(@Body-RequestBody-RequestBody);
@获取(“api/url/2”)
可观察方法二();
@获取(“api/url/3”)
可观察方法三();
}
我认为这很好,但每当我看到代码示例时,人们似乎都在为每个/组API调用和多个改型实例使用单独的接口
哪种方法正确?这两种方法对内存/性能的影响是否不同
您能否参考使用“正确方式”改装的项目/代码示例?如果它采用了2+RxJava+MVP架构,那就太完美了
谢谢 没有人创建不是优化方式的多个实例: 您可以参考以下示例代码链接以了解dagger 2改装和MVP:
**注**
Dagger允许您创建应用程序范围对象并在整个应用程序中使用,无需每次都创建新实例
@Module
public class ApiModule {
@AppScope
@Provides
APIInteface providesRetrofitApiService(Retrofit retrofit) {
return retrofit.create(APIInteface.class);
}
}
一旦你拥有了这个对象,你就可以在任何时候使用它,或者使用
@injectapinterface-apinterface代码>我需要为每个API使用不同的头和自定义值。那么我如何管理API调用呢?@GET(“/feeds/flowers.json”)可观察的注册(@Body-SignUpRequest-SignUpRequest)
您必须创建不同的请求模型,然后将其作为@Body传递,然后将其作为改型的多个实例传递。我不这么认为,因为它是Singleton@提供@Singleton改型ProviderTrofit(OkHttpClient-OkHttpClient、GsonConverterFactory-GsonConverterFactory、RxJava2CallAdapterFactory-callAdapterFactory){返回新的改装.Builder().baseUrl(baseUrl).addConverterFactory(gsonConverterFactory).addCallAdapterFactory(callAdapterFactory).client(okHttpClient).build();}
@Module
public class ApiModule {
@AppScope
@Provides
APIInteface providesRetrofitApiService(Retrofit retrofit) {
return retrofit.create(APIInteface.class);
}
}