Skip to content

Commit 164b2bf

Browse files
committed
Resolve callback support generic, Support reactive programming, Remove resolve.call 'type' param.
1 parent b6bc871 commit 164b2bf

23 files changed

Lines changed: 610 additions & 310 deletions

File tree

README.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ English | [中文](https://github.com/TangXiaoLv/Android-Router/blob/master/READ
55

66
|lib|androidrouter|androidrouter-compiler|androidrouter-annotations|
77
|---|---|---|---|
8-
|version|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter/images/download.svg?version=1.0.7) ](https://bintray.com/tangxiaolv/maven/androidrouter/1.0.7/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-compiler/images/download.svg?version=1.0.1) ](https://bintray.com/tangxiaolv/maven/androidrouter-compiler/1.0.1/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-annotations/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-annotations/1.0.0/link)|
8+
|version|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter/images/download.svg?version=2.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter/2.0.0/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-compiler/images/download.svg?version=1.0.1) ](https://bintray.com/tangxiaolv/maven/androidrouter-compiler/1.0.1/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-annotations/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-annotations/1.0.0/link)|
99

1010
High-performance, flexible, easy-to-use lightweight Android component-based framework, Used to solve the interdependence of complex projects, A single module is conducive to independent development and maintenance.
1111

1212
Update Log
1313
---
1414
```
15+
2.0.0: Resolve callback support generic, Support reactive programming, Remove resolve.call 'type' param.
1516
1.0.7: Fix system params passed exception.
1617
1.0.6: Fix known issues.
1718
1.0.5: Support array params and extend params.
@@ -168,6 +169,11 @@ public class MainModule implements IRouter {
168169
public void throwError(VPromise promise) {
169170
promise.reject(new RouterRemoteException("I'm error................."));
170171
}
172+
173+
@RouterPath("/reactive")
174+
public void reactive(VPromise promise) {
175+
promise.resolve("I'm from reactive!!!!!");
176+
}
171177
}
172178

173179
//Support multiple scheme.
@@ -185,7 +191,8 @@ public class RemoteModule implements IRouter {
185191
```
186192
###Step 2:Invoke
187193
```
188-
AndroidRouter.open("android://main/activity/localActivity")
194+
AndroidRouter
195+
.open("android://main/activity/localActivity")
189196
   .callOnSubThread()
190197
.returnOnMainThread()
191198
.call(new Resolve() {
@@ -201,13 +208,46 @@ AndroidRouter.open("android://main/activity/localActivity")
201208
});
202209
203210
//or
204-
AndroidRouter.open("android", "main", "/differentTypes")
211+
AndroidRouter
212+
.open("android", "main", "/differentTypes")
205213
.showTime()//Show time
206214
.call();//Igone result and error.
207215
208216
//or
209217
//Await the result returned.It will block thread.
210-
Object value = AndroidRouter.open(router11.getText().toString()).getValue();
218+
Object value = AndroidRouter.open("android://main/getValue").getValue();
219+
220+
//or
221+
AndroidRouter.open("android://main/reactive")
222+
.call(new Func<String, Integer>() {
223+
@Override
224+
public Integer call(String s) {
225+
return 1;
226+
}
227+
})
228+
.then(new Func<Integer, Double>() {
229+
@Override
230+
public Double call(Integer integer) {
231+
return 2.0;
232+
}
233+
})
234+
.then(new Func<Double, String>() {
235+
@Override
236+
public String call(Double ddouble) {
237+
return "I'm reactive!";
238+
}
239+
})
240+
.done(new Resolve<String>() {
241+
@Override
242+
public void call(String result) {
243+
title.setText(result);
244+
}
245+
}, new Reject() {
246+
@Override
247+
public void call(Exception e) {
248+
title.setText(e.toString());
249+
}
250+
});
211251
```
212252
###Proguard
213253
```

README_CN.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55

66
|lib|androidrouter|androidrouter-compiler|androidrouter-annotations|
77
|---|---|---|---|
8-
|version|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter/images/download.svg?version=1.0.7) ](https://bintray.com/tangxiaolv/maven/androidrouter/1.0.7/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-compiler/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-compiler/1.0.0/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-annotations/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-annotations/1.0.0/link)|
8+
|version|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter/images/download.svg?version=2.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter/2.0.0/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-compiler/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-compiler/1.0.0/link)|[ ![Download](https://api.bintray.com/packages/tangxiaolv/maven/androidrouter-annotations/images/download.svg?version=1.0.0) ](https://bintray.com/tangxiaolv/maven/androidrouter-annotations/1.0.0/link)|
99

1010
高性能,灵活,简单易用的轻量级Android组件化协议框架,用来解决复杂工程的互相依赖,解耦出的单个模块有利于独立开发和维护。
1111

1212
Update Log
1313
---
1414
```
15+
2.0.0: 支持泛型返回值,支持响应式处理回调函数。
1516
1.0.7: 修复系统类参数传递异常。
1617
1.0.6: 修复一些已知问题。
1718
1.0.5: 支持数组类型参数和可变参数。
@@ -168,6 +169,11 @@ public class MainModule implements IRouter {
168169
public void throwError(VPromise promise) {
169170
promise.reject(new RouterRemoteException("I'm error................."));
170171
}
172+
173+
@RouterPath("/reactive")
174+
public void reactive(VPromise promise) {
175+
promise.resolve("I'm from reactive!!!!!");
176+
}
171177
}
172178

173179
//支持接收多scheme
@@ -209,6 +215,38 @@ AndroidRouter.open("android://main/activity/localActivity")
209215
//方式三
210216
//阻塞式拿返回值
211217
Object value = AndroidRouter.open("android://main/getValue").getValue();
218+
219+
//方式四:响应式处理
220+
AndroidRouter.open("android://main/reactive")
221+
.call(new Func<String, Integer>() {
222+
@Override
223+
public Integer call(String s) {
224+
return 1;
225+
}
226+
})
227+
.then(new Func<Integer, Double>() {
228+
@Override
229+
public Double call(Integer integer) {
230+
return 2.0;
231+
}
232+
})
233+
.then(new Func<Double, String>() {
234+
@Override
235+
public String call(Double ddouble) {
236+
return "I'm reactive!";
237+
}
238+
})
239+
.done(new Resolve<String>() {
240+
@Override
241+
public void call(String result) {
242+
title.setText(result);
243+
}
244+
}, new Reject() {
245+
@Override
246+
public void call(Exception e) {
247+
title.setText(e.toString());
248+
}
249+
});
212250
```
213251
###混淆
214252
```

androidrouter/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ GROUP_ID=com.library.tangxiaolv
44
#must be the same as MODULE name
55
ARTIFACT_ID=androidrouter
66
#publicVersion
7-
PUBLIC_VERSION=1.0.7
7+
PUBLIC_VERSION=2.0.0
88
#jcenter repo library Name
99
LIBRARY_NAME=androidrouter
1010
#library description

androidrouter/src/main/java/com/tangxiaolv/router/AndroidRouter.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import android.text.TextUtils;
55

6+
import com.tangxiaolv.router.operators.CPromise;
7+
68
import java.util.List;
79
import java.util.Map;
810

@@ -20,9 +22,9 @@ public final class AndroidRouter {
2022
* @param url scheme://host/path?params=json
2123
* @return {@link CPromise}
2224
*/
23-
public static CPromise open(String url) {
25+
public static <R> CPromise<R> open(String url) {
2426
Promise promise = new Promise(new Asker(url));
25-
return new CPromise(promise);
27+
return new CPromise<>(promise);
2628
}
2729

2830
/**
@@ -33,9 +35,9 @@ public static CPromise open(String url) {
3335
* @param path The path of protocol
3436
* @return {@link CPromise}
3537
*/
36-
public static CPromise open(String scheme, String host, String path) {
38+
public static <R> CPromise<R> open(String scheme, String host, String path) {
3739
Promise promise = new Promise(new Asker(scheme, host, path, null));
38-
return new CPromise(promise);
40+
return new CPromise<>(promise);
3941
}
4042

4143
/**
@@ -47,9 +49,9 @@ public static CPromise open(String scheme, String host, String path) {
4749
* @param params The jsonObject params of protocol
4850
* @return {@link CPromise}
4951
*/
50-
public static CPromise open(String scheme, String host, String path, Map<String, Object> params) {
52+
public static <R> CPromise<R> open(String scheme, String host, String path, Map<String, Object> params) {
5153
Promise promise = new Promise(new Asker(scheme, host, path, params));
52-
return new CPromise(promise);
54+
return new CPromise<>(promise);
5355
}
5456

5557
/**
@@ -61,9 +63,9 @@ public static CPromise open(String scheme, String host, String path, Map<String,
6163
* @param params The jsonArray params of protocol
6264
* @return {@link CPromise}
6365
*/
64-
public static CPromise open(String scheme, String host, String path, List params) {
66+
public static <R> CPromise<R> open(String scheme, String host, String path, List params) {
6567
Promise promise = new Promise(new Asker(scheme, host, path, params));
66-
return new CPromise(promise);
68+
return new CPromise<>(promise);
6769
}
6870

6971
/**
@@ -72,12 +74,12 @@ public static CPromise open(String scheme, String host, String path, List params
7274
* @param scheme The scheme of protocol
7375
* @param host The host of protocol
7476
* @param path The path of protocol
75-
* @param json The json params of protocol
77+
* @param json The json params of protocol
7678
* @return {@link CPromise}
7779
*/
78-
public static CPromise open(String scheme, String host, String path, String json) {
80+
public static <R> CPromise<R> open(String scheme, String host, String path, String json) {
7981
Promise promise = new Promise(new Asker(scheme, host, path, json));
80-
return new CPromise(promise);
82+
return new CPromise<>(promise);
8183
}
8284

8385
/**

androidrouter/src/main/java/com/tangxiaolv/router/Asker.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11

22
package com.tangxiaolv.router;
33

4-
import java.lang.reflect.Method;
5-
import java.net.URLDecoder;
4+
import android.net.Uri;
5+
import android.text.TextUtils;
66

77
import com.tangxiaolv.router.exceptions.NotFoundRouterException;
88
import com.tangxiaolv.router.exceptions.RouterException;
99
import com.tangxiaolv.router.interfaces.IMirror;
10-
import com.tangxiaolv.router.utils.RLog;
1110
import com.tangxiaolv.router.utils.ReflectTool;
1211

13-
import android.net.Uri;
14-
import android.text.TextUtils;
15-
1612
import org.json.JSONException;
1713

14+
import java.lang.reflect.Method;
15+
import java.net.URLDecoder;
16+
1817
/**
1918
* Parse url and invoke {@link IMirror}
2019
*/

0 commit comments

Comments
 (0)