Java :
public class HttpManager {
private ApiService mApiService;
private static class SingleHolder{
private static final HttpManager INSTANCE = new HttpManager();
}
private HttpManager() {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("你的url")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
mApiService = retrofit.create(ApiService.class);
}
public static HttpManager newInstance(){
return SingleHolder.INSTANCE ;
}
public ApiService getApiService(){
return mApiService;
}
}
kotlin:
class HttpManager private constructor(){
private lateinit var mApiService : ApiService
//单例模式
private object SingleHolder{
internal val INSTANCE = HttpManager()
}
// 此处相对Java 的 private HtthpManager(){}私有构造器处理代码
init {
val client = OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.build()
val retrofit = Retrofit.Builder()
.baseUrl("你的url")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build()
mApiService = retrofit.create(ApiService::class.java)
}
//此处相对于Java 的 public static HttpManager newInstance()代码处理
companion object{
fun newInstnce(): HttpManager{
return SingleHolder.INSTANCE
}
}
fun getApiService(): ApiService{
return mApiService
}
}
这样单例优点:每次调用newInstance()返回的对象都是第一次加载时的 对象,同样getApiService() 也是返回同一对象