Skip to content

Commit b570699

Browse files
committed
add singleton GitHubApi and Toast
1 parent 0307729 commit b570699

File tree

4 files changed

+32
-18
lines changed

4 files changed

+32
-18
lines changed

app/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,14 @@ repositories {
3838
dependencies {
3939
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
4040
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
41+
compile 'com.android.support:support-annotations:23.1.1'
4142
compile 'com.jakewharton.scalpel:scalpel:1.1.2'
4243
compile 'com.android.support:appcompat-v7:23.1.1'
43-
4444
compile 'com.github.orhanobut:logger:1.12'
4545
compile 'com.jakewharton.rxbinding:rxbinding:0.3.0'
46-
4746
//retrofit+gson+rxjava
4847
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
49-
compile "com.squareup.retrofit:converter-gson:2.0.0-beta2"
48+
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
5049
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
5150
compile 'io.reactivex:rxandroid:1.1.0'
5251

app/src/main/java/com/malin/rengwuxianrxjava/activity/MainActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,7 @@ private void method21() {
11461146
mImageView.setVisibility(View.GONE);
11471147
mResultTextView.setVisibility(View.VISIBLE);
11481148
mResultTextView.setText("");
1149-
Call call = RetrofitService.getInstance().getUser("androidmalin");
1149+
Call call = RetrofitService.getInstance().createGitHubApi().getUser("androidmalin");
11501150

11511151
//asynchronous
11521152
call.enqueue(new Callback<User>() {
@@ -1194,7 +1194,7 @@ private void method22(){
11941194
//TODO:2:观察者
11951195
//TODO:3:订阅,被观察者 被 观察者订阅
11961196

1197-
Observable<User> observable = RetrofitService.getInstance().getUserObservable("androidmalin");
1197+
Observable<User> observable = RetrofitService.getInstance().createGitHubApi().getUserObservable("androidmalin");
11981198
observable
11991199
.subscribeOn(Schedulers.io())
12001200
.doOnSubscribe(new Action0() {
@@ -1248,7 +1248,7 @@ private void method23() {
12481248
mResultTextView.setVisibility(View.GONE);
12491249
mImageView.setVisibility(View.GONE);
12501250

1251-
mGitHubApi = RetrofitService.getInstance();
1251+
mGitHubApi = RetrofitService.getInstance().createGitHubApi();
12521252
mResultListView = (ListView) findViewById(R.id.lv_list);
12531253
mAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.item_log, R.id.item_log, new ArrayList<String>());
12541254
mResultListView.setAdapter(mAdapter);

app/src/main/java/com/malin/rengwuxianrxjava/service/RetrofitService.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,38 @@
4343
*/
4444
public class RetrofitService {
4545
private static final String API = "https://api.github.com";
46+
4647
protected RetrofitService() {
4748
}
4849

49-
private volatile static GitHubApi instance = null;
50+
private volatile static RetrofitService instance = null;
5051

51-
public static GitHubApi getInstance() {
52+
public static RetrofitService getInstance() {
5253
if (instance == null) {
5354
synchronized (RetrofitService.class) {
5455
if (instance == null) {
55-
instance = createGithubApi();
56+
instance = new RetrofitService();
5657
}
5758
}
5859
}
5960
return instance;
6061
}
6162

6263

63-
private static GitHubApi createGithubApi() {
64-
Retrofit.Builder builder = new Retrofit.Builder()
65-
.baseUrl(API)
66-
.addConverterFactory(GsonConverterFactory.create())//Gson Convert
67-
.addCallAdapterFactory(RxJavaCallAdapterFactory.create());//RxJava
68-
return builder.build().create(GitHubApi.class);
64+
private volatile static GitHubApi gitHubApi = null;
65+
66+
public static GitHubApi createGitHubApi() {
67+
if (gitHubApi == null) {
68+
synchronized (RetrofitService.class) {
69+
if (gitHubApi == null) {
70+
gitHubApi = new Retrofit.Builder()
71+
.baseUrl(API)
72+
.addConverterFactory(GsonConverterFactory.create())
73+
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
74+
.build().create(GitHubApi.class);
75+
}
76+
}
77+
}
78+
return gitHubApi;
6979
}
7080
}

app/src/main/java/com/malin/rengwuxianrxjava/utils/ToastUtil.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,14 @@ protected ToastUtil() {
6666

6767
public void showToast(Context context, String message) {
6868
if (mToast == null) {
69-
mToast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
70-
mToast.show();
71-
mFirstTime = System.currentTimeMillis();
69+
synchronized (ToastUtil.class) {
70+
if (mToast == null) {
71+
mToast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
72+
mToast.show();
73+
mFirstTime = System.currentTimeMillis();
74+
}
75+
}
76+
7277
} else {
7378
mSecondTime = System.currentTimeMillis();
7479
if (message.equals(mOldMessage)) {

0 commit comments

Comments
 (0)