File tree Expand file tree Collapse file tree 4 files changed +12
-9
lines changed
app/src/main/java/com/im4j/kakacache/rxjava/demo
library/src/main/java/com/im4j/kakacache/rxjava Expand file tree Collapse file tree 4 files changed +12
-9
lines changed Original file line number Diff line number Diff line change 77import android .widget .Button ;
88
99import com .im4j .kakacache .rxjava .netcache .RxRemoteCache ;
10- import com .im4j .kakacache .rxjava .netcache .strategy .FirstCacheStrategy ;
10+ import com .im4j .kakacache .rxjava .netcache .strategy .FirstTimeStrategy ;
1111
1212import java .util .concurrent .TimeUnit ;
1313
14+ import rx .Observable ;
15+
1416/**
1517 * Demo主界面
1618 * @version alafighting 2016-06
@@ -27,8 +29,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
2729
2830 btnTest = (Button ) findViewById (R .id .btn_test_cache );
2931 btnTest .setOnClickListener (view -> {
30- remote ().compose (RxRemoteCache .transformer (KEY_CACHE , new FirstCacheStrategy ())).subscribe (data -> {
31- Log .e ("main" , "next data=" + data );
32+ remote ().compose (RxRemoteCache .transformer (KEY_CACHE , new FirstTimeStrategy ())).subscribe (data -> {
33+ Log .e ("main" , "next data=" + data );
3234 }, error -> {
3335 Log .e ("main" , "error" , error );
3436 }, () -> {
@@ -38,6 +40,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3840 }
3941
4042 private rx .Observable <String > remote () {
43+ Log .e ("main" , "run remote1" );
4144 return rx .Observable .just ("test remote" ).delay (3 , TimeUnit .SECONDS );
4245 }
4346
Original file line number Diff line number Diff line change @@ -20,7 +20,6 @@ public final void call(Subscriber<? super T> subscriber) {
2020 execute (subscriber );
2121 } catch (Throwable e ) {
2222 onError (subscriber , e );
23- return ;
2423 }
2524
2625 subscriber .onCompleted ();
Original file line number Diff line number Diff line change 1515abstract class BasicCacheStrategy <T > implements CacheStrategy {
1616
1717 Observable <ResultData <T >> loadCache (String key ) {
18+ Log .e ("Strategy" , "loadCache key=" +key );
1819 return RxRemoteCache .load (key ).map (it -> new ResultData <>(ResultFrom .Cache , key , (T ) it ));
1920 }
2021
2122 Observable <ResultData <T >> loadRemote (String key , Observable <T > source ) {
2223 return source .map (it -> {
24+ Log .e ("Strategy" , "save key=" +key +", value=" +it );
2325 RxRemoteCache .save (key , it ).subscribe (status -> Log .e ("save status" , "status=" +status ) );
24- Log .e ("transformer" , "save key=" +key +", value=" +it );
25- return new ResultData <T >(ResultFrom .Remote , key , it );
26+ return new ResultData <>(ResultFrom .Remote , key , it );
2627 });
2728 }
2829
Original file line number Diff line number Diff line change 66import rx .schedulers .Schedulers ;
77
88/**
9- * 优先缓存
9+ * 谁先响应,处理谁
1010 * @version alafighting 2016-06
1111 */
12- public class FirstCacheStrategy <T > extends BasicCacheStrategy <T > {
12+ public class FirstTimeStrategy <T > extends BasicCacheStrategy <T > {
1313
1414 @ Override
1515 public Observable <ResultData <T >> execute (String key , Observable source ) {
1616 return Observable .concat (
1717 loadCache (key ),
1818 loadRemote (key , source )
19- ).first (it -> ((ResultData <T >)it ).data != null ).subscribeOn (Schedulers .io ());
19+ ).first (it -> ((ResultData <T >) it ).data != null ).subscribeOn (Schedulers .io ());
2020 }
2121
2222}
You can’t perform that action at this time.
0 commit comments