Skip to content

Commit ebc378b

Browse files
author
Vens Chen
committed
update RetrofitManager
1 parent 6a9de70 commit ebc378b

File tree

7 files changed

+95
-71
lines changed

7 files changed

+95
-71
lines changed

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,15 @@ public class HttpInterceptor implements Interceptor {
117117
```
118118

119119
## 简单使用
120+
121+
### 初始化
122+
```
123+
RetrofitManager.getInstence()
124+
.baseUrl("your baseurl")
125+
.addInterceptor(new HttpInterceptor())
126+
.create();
127+
```
128+
120129
### 业务请求
121130
具体的业务请求类继承HttpPresenter,传入一些配置参数:
122131
```
@@ -125,9 +134,7 @@ public class DocPresenter extends HttpPresenter {
125134
public DocPresenter(ILoadingView iLoadingView)
126135
{
127136
super(iLoadingView);
128-
//这里传入baseURL,拦截器,定义接口的类
129-
mApi = RetrofitManager.getInstence().getRetrofitService("your baseUrl",
130-
new HttpInterceptor(),ApiService.class);
137+
mApi = RetrofitManager.getInstence().getRetrofitService(ApiService.class);
131138
}
132139
133140
/**

app/src/main/java/com/threetree/thttp/BaseActivity.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,5 @@ public boolean isActive()
2828
return false;
2929
}
3030

31-
@Override
32-
public void toast(int i, String s)
33-
{
3431

35-
}
3632
}

app/src/main/java/com/threetree/thttp/CommonPresenter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ public CommonPresenter(Context context,ILoadingView iLoadingView)
1919
{
2020
super(iLoadingView);
2121
mContext = context;
22-
String url = "your url";
23-
mApiService = RetrofitManager.getInstence().getRetrofitService(url,new HttpInterceptor(),ApiService.class);
22+
mApiService = RetrofitManager.getInstence().getRetrofitService(ApiService.class);
2423
}
2524

2625
@Override

app/src/main/java/com/threetree/thttp/MainActivity.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.widget.Toast;
99

1010
import com.threetree.ttdialog.LoadingDialog;
11+
import com.threetree.tthttp.RetrofitManager;
1112
import com.threetree.tthttp.presenter.DownLoadPresenter;
1213
import com.threetree.tthttp.viewbind.IProgressView;
1314

@@ -25,15 +26,26 @@ protected void onCreate(Bundle savedInstanceState)
2526
{
2627
super.onCreate(savedInstanceState);
2728
setContentView(R.layout.activity_main);
29+
30+
RetrofitManager.getInstence()
31+
.baseUrl("your baseurl")
32+
.addInterceptor(new HttpInterceptor())
33+
.create();
34+
2835
mActive = true;
2936
mIv = (ImageView)findViewById(R.id.iv);
3037
mDocPresenter = new DocPresenter(this,this);
31-
findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
38+
findViewById(R.id.load_tv).setOnClickListener(new View.OnClickListener() {
39+
@Override
40+
public void onClick(View v)
41+
{
42+
download();
43+
}
44+
});
45+
findViewById(R.id.doc_tv).setOnClickListener(new View.OnClickListener() {
3246
@Override
3347
public void onClick(View v)
3448
{
35-
// download();
36-
3749
mDocPresenter.getDoc();
3850
}
3951
});
@@ -79,7 +91,7 @@ public void success()
7991
{
8092
mIv.setImageBitmap(BitmapFactory.decodeFile(FileUtil.getFilePath()));
8193
}
82-
}, "your baseUrl");
94+
}, "your baseurl");
8395
}
8496
mDownLoadPresenter.setFileDir(FileUtil.ROOT_PATH);
8597
mDownLoadPresenter.setDestFileName(FileUtil.NAME);
@@ -115,6 +127,6 @@ public boolean isActive()
115127
@Override
116128
public void onSuccess(String doc)
117129
{
118-
130+
Toast.makeText(this,doc,Toast.LENGTH_SHORT).show();
119131
}
120132
}

app/src/main/res/layout/activity_main.xml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,23 @@
77
>
88

99
<TextView
10-
android:id="@+id/tv"
10+
android:id="@+id/doc_tv"
1111
android:layout_gravity="center_horizontal"
1212
android:gravity="center"
1313
android:layout_marginTop="60dp"
1414
android:layout_width="wrap_content"
1515
android:layout_height="wrap_content"
16-
android:text="Hello World!"
16+
android:text="请求"
17+
/>
18+
19+
<TextView
20+
android:id="@+id/load_tv"
21+
android:layout_gravity="center_horizontal"
22+
android:gravity="center"
23+
android:layout_marginTop="60dp"
24+
android:layout_width="wrap_content"
25+
android:layout_height="wrap_content"
26+
android:text="下载图片"
1727
/>
1828

1929
<ImageView
Lines changed: 31 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.threetree.tthttp;
22

3-
import java.util.List;
43
import java.util.concurrent.TimeUnit;
54

65
import okhttp3.Interceptor;
@@ -15,6 +14,14 @@
1514

1615
public class RetrofitManager {
1716
private static RetrofitManager mRetrofitManager;
17+
private String mBaseUrl;
18+
private Retrofit mRetrofit;
19+
private OkHttpClient.Builder mClientBuilder;
20+
21+
private RetrofitManager()
22+
{
23+
mClientBuilder = new OkHttpClient.Builder();
24+
}
1825

1926
public static RetrofitManager getInstence()
2027
{
@@ -28,67 +35,38 @@ public static RetrofitManager getInstence()
2835
return mRetrofitManager;
2936
}
3037

31-
private OkHttpClient getHttpClient(List<Interceptor> interceptors)
38+
public RetrofitManager addInterceptor(Interceptor interceptor)
3239
{
33-
OkHttpClient.Builder builder = new OkHttpClient.Builder();
34-
builder.connectTimeout(15, TimeUnit.SECONDS);//超时
35-
if(interceptors != null && interceptors.size() > 0)
36-
{
37-
for (Interceptor interceptor:interceptors)
38-
{
39-
builder.addInterceptor(interceptor);
40-
}
41-
}
42-
return builder.build();
40+
mClientBuilder.addInterceptor(interceptor);
41+
return this;
4342
}
4443

45-
private OkHttpClient getHttpClient(Interceptor interceptor)
44+
public RetrofitManager baseUrl(String baseUrl)
4645
{
47-
OkHttpClient.Builder builder = new OkHttpClient.Builder();
48-
builder.connectTimeout(15, TimeUnit.SECONDS);//超时
49-
if(interceptor != null)
50-
{
51-
builder.addInterceptor(interceptor);
52-
}
53-
return builder.build();
46+
mBaseUrl = baseUrl;
47+
return this;
5448
}
5549

56-
57-
public <T> T getRetrofitService(String baseUrl, List<Interceptor> interceptors, Class<T> service)
50+
public void create()
5851
{
59-
Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl)
60-
//将client与retrofit关联
61-
.client(getHttpClient(interceptors))
62-
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
63-
.addConverterFactory(GsonConverterFactory.create())
64-
.build();
65-
//到这一步创建完成
66-
T retrofitService = null;
67-
try {
68-
Class<T> className = (Class<T>) Class.forName(service.getName());
69-
retrofitService = retrofit.create(className);
70-
} catch (Exception e) {
71-
e.printStackTrace();
72-
}
73-
return retrofitService;
52+
Retrofit.Builder builder = new Retrofit.Builder();
53+
builder.baseUrl(mBaseUrl);
54+
builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
55+
builder.addConverterFactory(GsonConverterFactory.create());
56+
57+
mClientBuilder.connectTimeout(15, TimeUnit.SECONDS);//超时
58+
mClientBuilder.readTimeout(20, TimeUnit.SECONDS);
59+
mClientBuilder.writeTimeout(20, TimeUnit.SECONDS);
60+
mClientBuilder.retryOnConnectionFailure(true);//重连
61+
62+
builder.client(mClientBuilder.build());
63+
mRetrofit = builder.build();
7464
}
7565

76-
public <T> T getRetrofitService(String baseUrl, Interceptor interceptor, Class<T> service)
66+
public <T> T getRetrofitService(Class<T> service)
7767
{
78-
Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl)
79-
//将client与retrofit关联
80-
.client(getHttpClient(interceptor))
81-
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
82-
.addConverterFactory(GsonConverterFactory.create())
83-
.build();
84-
//到这一步创建完成
85-
T retrofitService = null;
86-
try {
87-
Class<T> className = (Class<T>) Class.forName(service.getName());
88-
retrofitService = retrofit.create(className);
89-
} catch (Exception e) {
90-
e.printStackTrace();
91-
}
92-
return retrofitService;
68+
if (mRetrofit == null)
69+
throw new RuntimeException("retrofit must be init");
70+
return mRetrofit.create(service);
9371
}
9472
}

tthttp/src/main/java/com/threetree/tthttp/presenter/DownLoadPresenter.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import android.os.Message;
55
import android.text.TextUtils;
66

7-
import com.threetree.tthttp.RetrofitManager;
87
import com.threetree.tthttp.RetrofitService;
98
import com.threetree.tthttp.filedownload.FileLoadEvent;
109
import com.threetree.tthttp.interceptor.ProgressInterceptor;
@@ -16,12 +15,17 @@
1615
import java.io.IOException;
1716
import java.io.InputStream;
1817
import java.lang.ref.WeakReference;
18+
import java.util.concurrent.TimeUnit;
1919

2020
import io.reactivex.Observable;
2121
import io.reactivex.android.schedulers.AndroidSchedulers;
2222
import io.reactivex.functions.Consumer;
2323
import io.reactivex.schedulers.Schedulers;
24+
import okhttp3.OkHttpClient;
2425
import okhttp3.ResponseBody;
26+
import retrofit2.Retrofit;
27+
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
28+
import retrofit2.converter.gson.GsonConverterFactory;
2529

2630
/**
2731
* Created by Administrator on 2018/7/13.
@@ -64,7 +68,25 @@ public DownLoadPresenter(IProgressView iProgressView, String baseUrl)
6468
{
6569
super(iProgressView);
6670
this.iProgressView = iProgressView;
67-
mRetrofitService = RetrofitManager.getInstence().getRetrofitService(baseUrl,new ProgressInterceptor(mHandler),RetrofitService.class);
71+
mRetrofitService = getRetrofit(baseUrl).create(RetrofitService.class);
72+
}
73+
74+
private Retrofit getRetrofit(String baseUrl)
75+
{
76+
OkHttpClient client = new OkHttpClient.Builder()
77+
.addInterceptor(new ProgressInterceptor(mHandler))
78+
.connectTimeout(15, TimeUnit.SECONDS)//超时
79+
.readTimeout(20, TimeUnit.SECONDS)
80+
.writeTimeout(20, TimeUnit.SECONDS)
81+
.retryOnConnectionFailure(true)//重连
82+
.build();
83+
84+
return new Retrofit.Builder()
85+
.baseUrl(baseUrl)
86+
.client(client)
87+
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
88+
.addConverterFactory(GsonConverterFactory.create())
89+
.build();
6890
}
6991

7092
/**

0 commit comments

Comments
 (0)