Skip to content

Commit 07f5171

Browse files
committed
Support EasyActivityResult
1 parent 070f008 commit 07f5171

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

app/src/main/java/com/haoge/sample/easyandroid/activities/EasyResultActivity.kt

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class EasyResultActivity: BaseActivity() {
4141

4242
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
4343
super.onActivityResult(requestCode, resultCode, data)
44+
// 进行返回信息过滤派发
4445
EasyActivityResult.dispatch(this, requestCode, resultCode, data)
4546
}
4647
}

docs/EasyActivityResult.md

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# EasyActivityResult
2+
3+
EasyActivityResult主要用于解决onActivityResult业务逻辑臃肿的问题
4+
5+
[Sample Activity](../app/src/main/java/com/haoge/sample/easyandroid/activities/EasyResultActivity.kt)
6+
7+
## 特性
8+
9+
- **业务解耦分离**
10+
> 各自启动业务线处理各自的回调逻辑,不用再在onActivityResult中堆代码
11+
- **去除requestCode**
12+
> 进行启动时自动生成随机的requestCode, 不用再为每个启动任务分别配置请求码了。
13+
- 防暴击
14+
> 防止快速点击时启动多个重复页面
15+
16+
## 用法
17+
18+
1. 首先,在基类Activity中配置上回调派发入口:
19+
20+
```
21+
class BaseActivity:Activity() {
22+
...
23+
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
24+
super.onActivityResult(requestCode, resultCode, data)
25+
// 进行返回信息过滤派发
26+
EasyActivityResult.dispatch(this, requestCode, resultCode, data)
27+
}
28+
}
29+
```
30+
31+
2. 然后即可直接启动使用:
32+
33+
```
34+
EasyActivityResult.startActivity(activity,intent,
35+
{ resultCode:Int, data:Intent? ->
36+
// 直接在此进行返回数据处理
37+
})
38+
```

utils/src/main/java/com/haoge/easyandroid/easy/EasyActivityResult.kt

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ object EasyActivityResult {
1818
private var lastTime = 0L
1919

2020
@JvmStatic
21-
fun startActivity(context:Context, intent:Intent, callback:((resultCode:Int, data:Intent?) -> Unit)?, options: Bundle? = null) {
21+
fun startActivity(context:Context, intent:Intent, callback:((resultCode:Int, data:Intent?) -> Unit)?) {
22+
startActivity(context, intent, callback, null)
23+
}
2224

25+
@JvmStatic
26+
fun startActivity(context:Context, intent:Intent, callback:((resultCode:Int, data:Intent?) -> Unit)?, options: Bundle?) {
2327
val current = System.currentTimeMillis()
2428
val last = lastTime
2529
lastTime = current
@@ -55,8 +59,8 @@ object EasyActivityResult {
5559
if (!container.containsKey(activity)) {
5660
return
5761
}
58-
val map = container[activity]
59-
map?.remove(requestCode)?.invoke(resultCode, data)
62+
63+
container[activity]?.remove(requestCode)?.invoke(resultCode, data)
6064

6165
releaseInvalidItems()
6266
}

0 commit comments

Comments
 (0)