Skip to content

Commit 8bb6853

Browse files
author
alafighting
committed
增加对Retrofit缓存注解@Cache的支持
1 parent 16626a9 commit 8bb6853

File tree

17 files changed

+667
-2089
lines changed

17 files changed

+667
-2089
lines changed
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package com.im4j.kakacache.rxjava.demo;
22

3+
import com.im4j.kakacache.rxjava.netcache.CACHE;
4+
import com.im4j.kakacache.rxjava.netcache.ResultData;
5+
36
import java.util.List;
47

58
import retrofit2.http.GET;
69
import retrofit2.http.Path;
10+
import retrofit2.http.Query;
711

812
/**
913
* @version alafighting 2016-07
1014
*/
1115
public interface GitHubService {
1216

1317
@GET("users/{user}/repos")
14-
rx.Observable<List<GithubRepoEntity>> listRepos(@Path("user") String user);
18+
@CACHE("cache_key_listRepos")
19+
rx.Observable<ResultData<List<GithubRepoEntity>>> listRepos(@Path("user") String user,
20+
@Query("q") String q);
1521

1622
}

app/src/main/java/com/im4j/kakacache/rxjava/demo/MainActivity.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88

99
import com.im4j.kakacache.rxjava.common.utils.LogUtils;
1010
import com.im4j.kakacache.rxjava.netcache.KakaCache;
11-
import com.im4j.kakacache.rxjava.netcache.KakaRetrofit;
11+
import com.im4j.kakacache.rxjava.netcache.retrofit.KakaRxCallAdapterFactory;
1212
import com.im4j.kakacache.rxjava.netcache.strategy.CacheAndRemoteStrategy;
13-
import com.im4j.kakacache.rxjava.netcache.strategy.FirstCacheStrategy;
1413

1514
import java.util.concurrent.TimeUnit;
1615

17-
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
16+
import retrofit2.Retrofit;
1817
import retrofit2.converter.gson.GsonConverterFactory;
1918
import rx.Observable;
2019
import rx.Subscriber;
@@ -48,14 +47,25 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4847

4948
btnTestRetrofit = (Button) findViewById(R.id.btn_test_retrofit);
5049
btnTestRetrofit.setOnClickListener(view -> {
51-
KakaRetrofit retrofit = new KakaRetrofit.Builder()
50+
Retrofit retrofit = new Retrofit.Builder()
5251
.baseUrl("https://api.github.com/")
53-
.addConverterFactory(GsonConverterFactory.create())
54-
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
52+
.addConverterFactory(GsonConverterFactory.create(KakaCache.gson().create()))
53+
.addCallAdapterFactory(KakaRxCallAdapterFactory.create())
5554
.build();
5655

5756
GitHubService service = retrofit.create(GitHubService.class);
58-
service.listRepos("octocat").compose(KakaCache.transformer(KEY_CACHE, new FirstCacheStrategy())).subscribeOn(Schedulers.io()).subscribe(data -> {
57+
58+
// // 不修改原有代码,增加对Cache的支持
59+
// service.listRepos("octocat").compose(KakaCache.transformer(KEY_CACHE, new FirstCacheStrategy())).subscribeOn(Schedulers.io()).subscribe(data -> {
60+
// LogUtils.e(data);
61+
// }, error -> {
62+
// LogUtils.e(error);
63+
// });
64+
65+
// 通过注解,自动支持Cache
66+
service.listRepos("octocat", "abc")
67+
.subscribeOn(Schedulers.io())
68+
.subscribe(data -> {
5969
LogUtils.e(data);
6070
}, error -> {
6171
LogUtils.e(error);

library/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ dependencies {
3030
compile 'io.reactivex:rxandroid:1.2.1'
3131
compile 'com.squareup.okhttp3:okhttp:3.3.1'
3232
compile 'com.squareup.retrofit2:retrofit:2.1.0'
33+
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
34+
compile 'com.google.code.gson:gson:2.7'
3335
}

library/src/main/java/com/im4j/kakacache/rxjava/common/utils/LogUtils.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@
22

33
import android.util.Log;
44

5-
import java.util.ArrayList;
6-
import java.util.Arrays;
75
import java.util.Collection;
86
import java.util.Iterator;
9-
import java.util.List;
107

118
/**
9+
* 日志打印工具
1210
* @version alafighting 2016-07
1311
*/
1412
public final class LogUtils {
@@ -22,7 +20,7 @@ public static void e(Object obj) {
2220
String tag = className+'.'+element.getMethodName()+'('+element.getFileName()+':'+element.getLineNumber()+')';
2321
String message = toString(obj);
2422

25-
Log.e("[KakaCache]", tag+"\t"+message);
23+
Log.e("[KakaCache]", tag+"\n\t"+message);
2624
}
2725

2826
private static String toString(Object obj) {

0 commit comments

Comments
 (0)