【发布时间】:2018-01-01 08:29:13
【问题描述】:
以下代码是我目前如何使用Retrofit
Interface
**********
public interface LeafAPI
{
HttpLoggingInterceptor logging = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.addInterceptor(logging)
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ConstantValues.BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
Retrofit retrofitScr = new Retrofit.Builder()
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ConstantValues.BaseUrl)
.build();
@GET("someController/serviceName")
Call<ArrayList<UserDetails>> getUserList();
}
使用于Activity:
private void getUserDetails()
{
ServiceAPI api = ServiceAPI.retrofit.create(ServiceAPI.class);
Call<ArrayList<UserDetails>> call=api.getUserList();
call.enqueue(new Callback<ArrayList<UserDetails>>() {
@Override
public void onResponse(Call<ArrayList<UserDetails>> call, retrofit2.Response<ArrayList<UserDetails>> response) {
//Process the result and display in the UI
}
@Override
public void onFailure(Call<ArrayList<UserDetails>> call, Throwable t) {
//Display Error Message
}
});
}
我的情况是我必须fetch 和userlist 中的多个activities。
所以我最终在每一个中都复制了getUserDetails() 方法。
我想知道是否可以将getUserDetails 移动到单独的Class,然后从那里重新使用它。我环顾四周,但retrofit 上的所有示例都与我在上面放置的内容相似。
我非常感谢任何能够为我指明正确方向的帮助。
【问题讨论】:
-
是的,您可以使用将其移动到单独的类并重新使用它并对活动进行回调
-
如果您的项目增长,那么也许是时候使用一些架构模式(如 MVP、MVVM)了。查看这个在 MVP 项目中使用改造的简单示例:Simple MVP Retrofit example
-
我也建议您观看此视频youtube.com/watch?v=t34AQlblSeE。你不需要改造和改造Scr。欲了解更多信息,请观看视频
-
@Raghunandan 谢谢我发现这个链接非常有用。谢谢
-
我不明白投反对票的原因,请有人指出。
标签: android retrofit code-reuse