From 398bbc37dc0a8f2c6269429d36694b2090ca06a1 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 12 Aug 2020 17:47:33 +0800 Subject: [PATCH 01/18] =?UTF-8?q?-=20=E5=88=A0=E9=99=A4=20Service=20?= =?UTF-8?q?=E7=9A=84=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD.=20-=20ServiceManager=20=E7=B1=BB=E7=9A=84=20?= =?UTF-8?q?=E5=8F=8D=E6=B3=A8=E5=86=8C=E6=96=B9=E6=B3=95=E7=9A=84=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E6=94=B9=E4=B8=BA=20void?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/service/ServiceManager.java | 30 +++---------------- .../component/service/IServiceLifecycle.java | 9 ------ .../component/support/SingletonCallable.java | 4 +++ .../plugin/ModifyASMUtilTransform.java | 2 +- .../service/Component1ServiceImpl.java | 13 +------- .../component2/service/TestInterfaceImpl.kt | 10 +------ .../component-plugin/maven-metadata.xml | 5 ++-- .../component-plugin/maven-metadata.xml.md5 | 2 +- .../component-plugin/maven-metadata.xml.sha1 | 2 +- app/proguard-rules.pro | 1 - changelog.md | 7 ++++- dependencies.gradle | 4 +-- 12 files changed, 24 insertions(+), 65 deletions(-) delete mode 100644 ComponentImpl/src/main/java/com/xiaojinzi/component/service/IServiceLifecycle.java diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/service/ServiceManager.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/service/ServiceManager.java index 00c2dcba..e06325e9 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/service/ServiceManager.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/service/ServiceManager.java @@ -6,7 +6,6 @@ import com.xiaojinzi.component.Component; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; -import com.xiaojinzi.component.service.IServiceLifecycle; import com.xiaojinzi.component.support.Action; import com.xiaojinzi.component.support.CallNullable; import com.xiaojinzi.component.support.Callable; @@ -44,35 +43,24 @@ private ServiceManager() { public static void register(@NonNull Class tClass, @NonNull Callable callable) { Utils.checkNullPointer(tClass, "tClass"); Utils.checkNullPointer(callable, "callable"); - // 先卸载, 因为覆盖的话, 生命周期的销毁就走不了 unregister(tClass); serviceMap.put(tClass, callable); } @Nullable @AnyThread - public static T unregister(@NonNull Class tClass) { + public static void unregister(@NonNull Class tClass) { Utils.checkNullPointer(tClass, "tClass"); // 需要判断到是否已经初始化了, 如果还没初始化就返回 null Callable callable = serviceMap.remove(tClass); if (callable == null) { - return null; + return; } if (callable instanceof SingletonCallable) { if (((SingletonCallable) callable).isInit()) { - final T t = (T) callable.get(); - if (t instanceof IServiceLifecycle) { - Utils.mainThreadAction(new Action() { - @Override - public void run() { - ((IServiceLifecycle) t).onDestroy(); - } - }); - } - return t; + ((SingletonCallable) callable).destroy(); } } - return null; } /** @@ -93,18 +81,8 @@ public T get() { if (callable == null) { return null; } else { - T t = null; - boolean isNeedCallOnCreateMethod = true; - if (callable instanceof SingletonCallable) { // 如果是单利的 - if (((SingletonCallable) callable).isInit()) { - isNeedCallOnCreateMethod = false; - } - } // 如果没创建, 这时候会创建了目标 service 对象 - t = (T) Utils.checkNullPointer(callable.get()); - if (isNeedCallOnCreateMethod && t instanceof IServiceLifecycle) { - ((IServiceLifecycle) t).onCreate(Component.getApplication()); - } + T t = (T) Utils.checkNullPointer(callable.get()); return t; } } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/service/IServiceLifecycle.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/service/IServiceLifecycle.java deleted file mode 100644 index dacb5a85..00000000 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/service/IServiceLifecycle.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.xiaojinzi.component.service; - -import com.xiaojinzi.component.support.IBaseLifecycle; - -/** - * 如果一个自定义的 Service 想有基本的生命周期的回调, 请实现此接口 - */ -public interface IServiceLifecycle extends IBaseLifecycle { -} diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/SingletonCallable.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/SingletonCallable.java index 05a4e0c3..faf997d8 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/SingletonCallable.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/SingletonCallable.java @@ -31,6 +31,10 @@ public final T get() { return instance; } + public synchronized final void destroy() { + instance = null; + } + /** * 获取真正的对象 */ diff --git a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ModifyASMUtilTransform.java b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ModifyASMUtilTransform.java index ee7203f6..d86cff65 100644 --- a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ModifyASMUtilTransform.java +++ b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ModifyASMUtilTransform.java @@ -117,6 +117,7 @@ public void transform(TransformInvocation transformInvocation) throws TransformE routerDegradeMap, serviceMap, fragmentMap ); try { + // 生成到桌面用来测试 if (mAsmUtilOutputPathStr != null && !"".equals(mAsmUtilOutputPathStr)) { File file = new File(mAsmUtilOutputPathStr); file.delete(); @@ -130,7 +131,6 @@ public void transform(TransformInvocation transformInvocation) throws TransformE } catch (Exception ignore) { // ignore } - // 生成到桌面用来测试 ZipEntry asmUtiZipEntry = new ZipEntry(jarEntry.getName()); asmUtiZipEntry.setSize(bytes.length); CRC32 crc = new CRC32(); diff --git a/Module1/src/main/java/com/xiaojinzi/component1/service/Component1ServiceImpl.java b/Module1/src/main/java/com/xiaojinzi/component1/service/Component1ServiceImpl.java index 6b669582..7d6f7103 100644 --- a/Module1/src/main/java/com/xiaojinzi/component1/service/Component1ServiceImpl.java +++ b/Module1/src/main/java/com/xiaojinzi/component1/service/Component1ServiceImpl.java @@ -7,7 +7,6 @@ import com.xiaojinzi.base.service.inter.component1.Component1Service; import com.xiaojinzi.component.anno.ServiceAnno; -import com.xiaojinzi.component.service.IServiceLifecycle; import java.util.Random; import java.util.concurrent.TimeUnit; @@ -15,7 +14,7 @@ import io.reactivex.Single; @ServiceAnno(Component1Service.class) -public class Component1ServiceImpl implements Component1Service, IServiceLifecycle { +public class Component1ServiceImpl implements Component1Service { private Random r = new Random(); private Context context; @@ -42,14 +41,4 @@ public Single testError() throws Exception { } } - @Override - public void onCreate(@NonNull Application app) { - System.out.println(""); - } - - @Override - public void onDestroy() { - System.out.println(""); - } - } diff --git a/Module2/src/main/java/com/xiaojinzi/component2/service/TestInterfaceImpl.kt b/Module2/src/main/java/com/xiaojinzi/component2/service/TestInterfaceImpl.kt index 08b1a281..b0229289 100644 --- a/Module2/src/main/java/com/xiaojinzi/component2/service/TestInterfaceImpl.kt +++ b/Module2/src/main/java/com/xiaojinzi/component2/service/TestInterfaceImpl.kt @@ -1,8 +1,6 @@ package com.xiaojinzi.component2.service -import android.app.Application import com.xiaojinzi.component.anno.ServiceAnno -import com.xiaojinzi.component.service.IServiceLifecycle /** * time : 2018/12/06 @@ -10,16 +8,10 @@ import com.xiaojinzi.component.service.IServiceLifecycle * @author : xiaojinzi */ @ServiceAnno(value = [TestInterface::class], singleTon = false) -class TestInterfaceImpl : TestInterface, IServiceLifecycle { +class TestInterfaceImpl : TestInterface { override fun doSomeThing() { TODO("Not yet implemented") } - override fun onCreate(app: Application) { - } - - override fun onDestroy() { - } - } diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml index 085632d7..58cbc16e 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml @@ -3,7 +3,7 @@ com.xiaojinzi.component component-plugin - 1.8.3.2 + 1.8.3.3 1.7.7.3 1.7.8 @@ -19,7 +19,8 @@ 1.8.3 1.8.3.1 1.8.3.2 + 1.8.3.3 - 20200805142303 + 20200812094422 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 index cda8aa59..6ea00578 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 @@ -1 +1 @@ -a4cf46c1ec57b65a0939bc37600e555d \ No newline at end of file +d8d1734d153de19d59195a4984af40cb \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 index a680c083..9715b687 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 @@ -1 +1 @@ -375ae8e06c10e7bb354345fbc1b135636ffb6cf9 \ No newline at end of file +afe4125b4160286372c1e9a2fb460f7475d9d403 \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 765ff01d..c4955d3a 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -37,6 +37,5 @@ -keep class * implements com.xiaojinzi.component.impl.RouterInterceptor{*;} -keep class * implements com.xiaojinzi.component.support.IBaseLifecycle{*;} -keep class * implements com.xiaojinzi.component.application.IApplicationLifecycle{*;} --keep class * implements com.xiaojinzi.component.service.IServiceLifecycle{*;} -keep class * implements com.xiaojinzi.component.application.IComponentApplication{*;} -keep class * implements com.xiaojinzi.component.support.Inject{*;} \ No newline at end of file diff --git a/changelog.md b/changelog.md index 9224db42..86c086c4 100644 --- a/changelog.md +++ b/changelog.md @@ -1,11 +1,16 @@ +#### [v1.8.3.3](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.3) +- 删除 1.8.3.1 增加的 Service 生命周期的功能. 实践得知, 这功能并不正确 +- ServiceManager 的反注册方法改为没有返回值. +- + #### [v1.8.3.2](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.2) - 修复 void method(Context context, Callback callback); 这中 Api 接口方法生成代码失败的问题 #### [v1.8.3.1](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.1) - 增加 java8 的发布维度 - 支持属性注入多个属性. 主要用于兼容如果想变动 key 的问题. -- 支持 @ServiceAnno 标记的服务实现类, 可以可选的实现 IServiceLifecycle 接口来接受模块的生命周期的回调 +- ~~支持 @ServiceAnno 标记的服务实现类, 可以可选的实现 IServiceLifecycle 接口来接受模块的生命周期的回调~~ 此功能将被删除. - 用户自定义的模块生命周期类, 需要实现 IApplicationLifecycle 接口, 而不是老的 IComponentApplication 接口, 虽说老的目前也支持, 但是若干版本之后会删除 - 内部优化类结构. 需要更新新的[混淆配置](https://github.com/xiaojinzi123/Component/wiki/%E4%BE%9D%E8%B5%96%E5%92%8C%E9%85%8D%E7%BD%AE-AndroidX#%E6%B7%B7%E6%B7%86%E9%85%8D%E7%BD%AE) diff --git a/dependencies.gradle b/dependencies.gradle index e319aaa4..bf00ce49 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -10,8 +10,8 @@ ext.versions = [ constraintLayout : '2.0.0-rc1', rxjava : '2.2.19', rxandroid : "2.1.1", - component_version : "1.8.3.2", - component_plugin_upload_version: "1.8.3.2" + component_version : "1.8.3.3", + component_plugin_upload_version: "1.8.3.3" ] ext.libs = [ From 68b66d03c24db2b762352c10624d8cac8d91e407 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 12 Aug 2020 17:47:40 +0800 Subject: [PATCH 02/18] =?UTF-8?q?-=20=E5=88=A0=E9=99=A4=20Service=20?= =?UTF-8?q?=E7=9A=84=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD.=20-=20ServiceManager=20=E7=B1=BB=E7=9A=84=20?= =?UTF-8?q?=E5=8F=8D=E6=B3=A8=E5=86=8C=E6=96=B9=E6=B3=95=E7=9A=84=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E6=94=B9=E4=B8=BA=20void?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1.8.3.3/component-plugin-1.8.3.3.jar | Bin 0 -> 25078 bytes .../1.8.3.3/component-plugin-1.8.3.3.jar.md5 | 1 + .../1.8.3.3/component-plugin-1.8.3.3.jar.sha1 | 1 + .../1.8.3.3/component-plugin-1.8.3.3.pom | 28 ++++++++++++++++++ .../1.8.3.3/component-plugin-1.8.3.3.pom.md5 | 1 + .../1.8.3.3/component-plugin-1.8.3.3.pom.sha1 | 1 + 6 files changed, 32 insertions(+) create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.md5 create mode 100644 RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.sha1 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..e75c8601ec1fe1cf2a5c403f53e5795a7346be7d GIT binary patch literal 25078 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 literal 0 HcmV?d00001 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 new file mode 100644 index 00000000..ef690630 --- /dev/null +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 @@ -0,0 +1 @@ +3d7fd58a9d186bf07c0199bb8992c167 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 new file mode 100644 index 00000000..d7e91d2e --- /dev/null +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 @@ -0,0 +1 @@ +a964c269fcf734f4fc055fdafc1b8099c8a1ad3a \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom new file mode 100644 index 00000000..637e4e91 --- /dev/null +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom @@ -0,0 +1,28 @@ + + + 4.0.0 + com.xiaojinzi.component + component-plugin + 1.8.3.3 + + + org.ow2.asm + asm-all + 5.2 + runtime + + + com.android.tools.build + gradle + 3.3.0 + runtime + + + com.google.code.gson + gson + 2.8.6 + runtime + + + diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.md5 new file mode 100644 index 00000000..2f6453dc --- /dev/null +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.md5 @@ -0,0 +1 @@ +0613aed020c1d9fe0aa601b24aef8882 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.sha1 new file mode 100644 index 00000000..4b6c5b90 --- /dev/null +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.pom.sha1 @@ -0,0 +1 @@ +c9db56cc1072bc4345a1df01e2774b3ef46dcf54 \ No newline at end of file From 8bd3b7bbf7ded58b9c70fad60b2ea317fedd64aa Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Mon, 17 Aug 2020 10:30:16 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=A2=9E=E5=8A=A0=E6=8F=90=E7=A4=BA=E6=8E=92?= =?UTF-8?q?=E6=9F=A5=E7=9A=84=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiaojinzi/component/impl/application/ModuleManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java index 54d5a204..b0ef2b89 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java @@ -28,6 +28,8 @@ */ public class ModuleManager implements IComponentCenterApplication { + public static final String ISSUE = "https://github.com/xiaojinzi123/Component/issues/21"; + /** * 单例对象 */ @@ -104,7 +106,7 @@ public void registerArr(@Nullable String... hosts) { for (String host : hosts) { IComponentHostApplication moduleApplication = findModuleApplication(host); if (moduleApplication == null) { - LogUtil.log("模块 '" + host + "' 加载失败"); + LogUtil.log("模块 '" + host + "' 加载失败, 请根据链接中的内容自行排查! \n " + ISSUE); } else { register(moduleApplication); } From 292a6fa85827499782b6424724abf6d456f0f445 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Mon, 17 Aug 2020 10:32:32 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8E=92=E6=9F=A5=E6=8C=87=E5=8D=97=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xiaojinzi/component/Component.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java index 32a9b1ac..7df775e5 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java @@ -94,6 +94,7 @@ private static void printComponent() { sb.append("感谢您选择 Component 组件化框架. \n有任何问题欢迎提 issue 或者扫描 github 上的二维码进入群聊@群主\n") .append("Github 地址:https://github.com/xiaojinzi123/Component") .append("\n文档地址:https://github.com/xiaojinzi123/Component/wiki") + .append("\n错误排查指南:" + ModuleManager.ISSUE) .append("\n "); LogUtil.logw(sb.toString()); From 06b355f43981c6c2b6b099fcb41b9eda963efc53 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 19 Aug 2020 09:26:16 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=89=93=E5=8D=B0=20lo?= =?UTF-8?q?go=20=E7=9A=84=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xiaojinzi/component/Component.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java index 7df775e5..9eef0b72 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java @@ -47,26 +47,23 @@ private Component() { */ @MainThread public static void init(boolean isDebug, @NonNull Config config) { - // 做必要的检查 if (isInit) { throw new RuntimeException("you have init Component already!"); } Utils.checkMainThread(); Utils.checkNullPointer(config, "config"); - Component.isDebug = isDebug; mConfig = config; + if (isDebug) { + printComponent(); + } // 注册 mConfig.getApplication().registerActivityLifecycleCallbacks(new ComponentLifecycleCallback()); if (mConfig.isOptimizeInit() && mConfig.isAutoRegisterModule()) { ModuleManager.getInstance().autoRegister(); } isInit = true; - if (isDebug) { - printComponent(); - } - } /** From 040a84a4b99005b43406bd3e9a5eebad7d79620e Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Fri, 21 Aug 2020 15:35:17 +0800 Subject: [PATCH 06/18] =?UTF-8?q?feat(feat):=20=E5=A2=9E=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E7=9A=84=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=A8=8B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xiaojinzi/component/Component.java | 11 ++++++++--- .../com/xiaojinzi/component/impl/RouterCenter.java | 3 ++- .../component/impl/application/ModuleManager.java | 2 +- Module1/gradle.properties | 4 ---- ModuleUser/gradle.properties | 2 -- app/build.gradle | 3 +++ .../main/java/com/xiaojinzi/componentdemo/Test.java | 7 ------- .../com/xiaojinzi/componentdemo/view/MainAct.java | 9 +++------ 8 files changed, 17 insertions(+), 24 deletions(-) delete mode 100644 app/src/main/java/com/xiaojinzi/componentdemo/Test.java diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java index 9eef0b72..8b33ca34 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java @@ -22,6 +22,11 @@ */ public class Component { + public static final String GITHUB_URL = "https://github.com/xiaojinzi123/Component"; + public static final String DOC_URL = "https://github.com/xiaojinzi123/Component/wiki"; + public static final String COMMON_ERROR_ISSUE = "https://github.com/xiaojinzi123/Component/issues/21"; + public static final String ROUTER_UES_NOTE = "https://github.com/xiaojinzi123/Component/wiki/%E4%B8%BB%E9%A1%B5#%E7%89%B9%E5%88%AB%E6%B3%A8%E6%84%8F"; + /** * 是否初始化过了 */ @@ -89,9 +94,9 @@ private static void printComponent() { sb.append(" *********\n"); sb.append("感谢您选择 Component 组件化框架. \n有任何问题欢迎提 issue 或者扫描 github 上的二维码进入群聊@群主\n") - .append("Github 地址:https://github.com/xiaojinzi123/Component") - .append("\n文档地址:https://github.com/xiaojinzi123/Component/wiki") - .append("\n错误排查指南:" + ModuleManager.ISSUE) + .append("Github 地址:" + GITHUB_URL) + .append("\n文档地址:" + DOC_URL) + .append("\n错误排查指南:" + COMMON_ERROR_ISSUE) .append("\n "); LogUtil.logw(sb.toString()); diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java index 57e026ca..6b1bf3c1 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java @@ -142,7 +142,8 @@ private void doOpenUri(@NonNull final RouterRequest request) throws Exception { Context rawContext = request.getRawContext(); // 如果 Context 和 Fragment 中的 Context 都是 null if (rawContext == null) { - throw new NavigationFailException("is your fragment or Activity is Destoried?"); + throw new NavigationFailException("is your fragment or Activity is Destoried?\n" + + "see " + Component.ROUTER_UES_NOTE); } Intent intent = null; if (target.getTargetClass() != null) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java index b0ef2b89..1db57573 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/application/ModuleManager.java @@ -106,7 +106,7 @@ public void registerArr(@Nullable String... hosts) { for (String host : hosts) { IComponentHostApplication moduleApplication = findModuleApplication(host); if (moduleApplication == null) { - LogUtil.log("模块 '" + host + "' 加载失败, 请根据链接中的内容自行排查! \n " + ISSUE); + LogUtil.log("模块 '" + host + "' 加载失败, 请根据链接中的内容自行排查! \n " + Component.COMMON_ERROR_ISSUE); } else { register(moduleApplication); } diff --git a/Module1/gradle.properties b/Module1/gradle.properties index 22413b6b..e69de29b 100644 --- a/Module1/gradle.properties +++ b/Module1/gradle.properties @@ -1,4 +0,0 @@ -canRunAlone=true -isLibraryActual=true -//debugComponents=UserComponent -//releaseComponents=UserComponent \ No newline at end of file diff --git a/ModuleUser/gradle.properties b/ModuleUser/gradle.properties index c34c326c..e69de29b 100644 --- a/ModuleUser/gradle.properties +++ b/ModuleUser/gradle.properties @@ -1,2 +0,0 @@ -canRunAlone=true -isLibraryActual=true \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 3a4bc5cb..0258a0c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,4 +73,7 @@ dependencies { } // 内存检测的 // debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3' + + implementation "org.java-websocket:Java-WebSocket:1.5.1" + } diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/Test.java b/app/src/main/java/com/xiaojinzi/componentdemo/Test.java deleted file mode 100644 index d5b8b44b..00000000 --- a/app/src/main/java/com/xiaojinzi/componentdemo/Test.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.xiaojinzi.componentdemo; - -public class Test { - public static void main(String[] args) { - - } -} diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java index 1d156992..b56ff60f 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java @@ -7,7 +7,6 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.NotificationCompat; @@ -18,14 +17,12 @@ import com.xiaojinzi.base.ModuleConfig; import com.xiaojinzi.base.router.AppApi; import com.xiaojinzi.component.anno.RouterAnno; -import com.xiaojinzi.component.impl.Callback; import com.xiaojinzi.component.impl.Router; -import com.xiaojinzi.component.impl.RouterErrorResult; -import com.xiaojinzi.component.impl.RouterRequest; -import com.xiaojinzi.component.impl.RouterResult; import com.xiaojinzi.component.impl.application.ModuleManager; import com.xiaojinzi.componentdemo.R; +import java.net.URISyntaxException; + /** * 启动界面 */ @@ -133,7 +130,7 @@ public void testWebRouter(View view) { .forward(); } - public void testQuality(View view) { + public void testQuality(View view) throws URISyntaxException { Router.withApi(AppApi.class) .goToTestQuality() .subscribe(); From 685314e5d81b0b6b9660d833967258de8b8f0a5d Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Fri, 21 Aug 2020 16:15:47 +0800 Subject: [PATCH 07/18] =?UTF-8?q?feat(feat):=20=E5=8D=87=E7=BA=A7=20kotlin?= =?UTF-8?q?=20=E7=9A=84=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java | 1 + build.gradle | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java index b56ff60f..6623ed11 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java @@ -121,6 +121,7 @@ public void testWebRouter(View view) { .with(this) .host(ModuleConfig.Help.NAME) .path(ModuleConfig.Help.TEST_WEB_ROUTER) + .autoCancel() .afterStartAction(() -> { overridePendingTransition( android.R.anim.fade_in, diff --git a/build.gradle b/build.gradle index 1f1d2939..dff4e39d 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { apply from: "dependencies.gradle" - ext.kotlin_version = '1.3.72' + ext.kotlin_version = '1.4.0' ext.component_group_id = "com.xiaojinzi" ext.isDependMavenOnline = false // ext.component_asm_util_class_output_path = "./Temp/ASMUtil.class" From 23a199cff79c67d6112a8e3db13dd0cd9566cbe6 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Fri, 21 Aug 2020 16:16:28 +0800 Subject: [PATCH 08/18] feat(feat): delete error code --- app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java index 6623ed11..b56ff60f 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java @@ -121,7 +121,6 @@ public void testWebRouter(View view) { .with(this) .host(ModuleConfig.Help.NAME) .path(ModuleConfig.Help.TEST_WEB_ROUTER) - .autoCancel() .afterStartAction(() -> { overridePendingTransition( android.R.anim.fade_in, From c70f801c7e25227c09515daae96774c57f19e825 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Fri, 21 Aug 2020 20:24:03 +0800 Subject: [PATCH 09/18] feat(feat): will add RetryAnno for interceptor --- .../xiaojinzi/component/anno/RetryAnno.java | 25 +++++++++++++++++++ .../component/support/ConditionCache.java | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java new file mode 100644 index 00000000..941a7d66 --- /dev/null +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java @@ -0,0 +1,25 @@ +package com.xiaojinzi.component.anno; + +import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 重试注解 + */ +@MainThreadCreateAnno +@Target({ElementType.TYPE) +@Retention(RetentionPolicy.CLASS) +public @interface RetryAnno { + + /** + * 这个 Fragment 对应的唯一 ID + * + * @return 对应 Fragment 的一个标记, 不能重复 + */ + String[] value(); + +} diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/ConditionCache.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/ConditionCache.java index 8e841afc..ad830219 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/ConditionCache.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/ConditionCache.java @@ -34,7 +34,7 @@ public static synchronized Condition getByClass(@NonNull Class Date: Fri, 21 Aug 2020 20:24:56 +0800 Subject: [PATCH 10/18] feat(feat): will add RetryAnno for interceptor --- .../main/java/com/xiaojinzi/component/anno/RetryAnno.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java index 941a7d66..01b1c142 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java @@ -11,15 +11,13 @@ * 重试注解 */ @MainThreadCreateAnno -@Target({ElementType.TYPE) +@Target(ElementType.TYPE) @Retention(RetentionPolicy.CLASS) public @interface RetryAnno { /** - * 这个 Fragment 对应的唯一 ID - * - * @return 对应 Fragment 的一个标记, 不能重复 + * 大于 0 才是有效的 */ - String[] value(); + int value() default 0; } From 6c2c5ce8aebb7751b99b5f5d790a77a3d83d9c16 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 26 Aug 2020 10:12:25 +0800 Subject: [PATCH 11/18] feat(feat): fix RouterRequest.bundle change to RouterRequest.Builder.bundle is address assign --- .../xiaojinzi/component/anno/RetryAnno.java | 23 ------------------- .../xiaojinzi/component/impl/Navigator.java | 6 +++-- .../component/impl/RouterRequest.java | 13 ++++++----- .../component/impl/RouterResult.java | 4 ++++ .../interceptor/DialogShowInterceptor.java | 19 +++++++-------- 5 files changed, 23 insertions(+), 42 deletions(-) delete mode 100644 ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java deleted file mode 100644 index 01b1c142..00000000 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/RetryAnno.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.xiaojinzi.component.anno; - -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 重试注解 - */ -@MainThreadCreateAnno -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.CLASS) -public @interface RetryAnno { - - /** - * 大于 0 才是有效的 - */ - int value() default 0; - -} diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java index 5d1bd00b..b15f28d6 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java @@ -1097,6 +1097,7 @@ public InterceptorCallback(@NonNull RouterRequest originalRequest, @Override public void onSuccess(@NonNull RouterResult result) { + Utils.checkNullPointer(result); synchronized (this) { if (isEnd()) { return; @@ -1108,6 +1109,7 @@ public void onSuccess(@NonNull RouterResult result) { @Override public void onError(@NonNull Throwable error) { + Utils.checkNullPointer(error); synchronized (this) { if (isEnd()) { return; @@ -1404,9 +1406,9 @@ private static class InterceptorChain implements RouterInterceptor.Chain { /** * @param interceptors 拦截器的即可 - * @param index 要执行的拦截器的下标 + * @param index 要执行的拦截器的下标 * @param request 第一次这个对象是不需要的 - * @param callback 用户的 {@link Callback} + * @param callback 用户的 {@link Callback} */ public InterceptorChain(@NonNull List interceptors, int index, @NonNull RouterRequest request, @NonNull RouterInterceptor.Callback callback) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java index f29a713a..5fc4175d 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java @@ -81,13 +81,13 @@ public class RouterRequest { public final Bundle options; /** - * Intent 的 flag + * Intent 的 flag, 集合不可更改 */ @NonNull public final List intentFlags; /** - * Intent 的 类别 + * Intent 的 类别, 集合不可更改 */ @NonNull public final List intentCategories; @@ -158,9 +158,7 @@ private RouterRequest(@NonNull Builder builder) { // 这两个集合是不可以更改的 intentCategories = Collections.unmodifiableList(builder.intentCategories); intentFlags = Collections.unmodifiableList(builder.intentFlags); - if (builder.bundle != null) { - this.bundle.putAll(builder.bundle); - } + this.bundle.putAll(builder.bundle); intentConsumer = builder.intentConsumer; beforAction = builder.beforAction; beforStartAction = builder.beforStartAction; @@ -301,7 +299,10 @@ public Builder toBuilder() { } } - builder.bundle = bundle; + if (builder.bundle == null) { + builder.bundle = new Bundle(); + } + builder.bundle.putAll(bundle); builder.requestCode = requestCode; builder.isForResult = isForResult; builder.options = options; diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java index c0b8f100..03fba02b 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java @@ -2,6 +2,8 @@ import android.support.annotation.NonNull; +import com.xiaojinzi.component.support.Utils; + /** * 这个类表示一次成功路由的返回结果对象 * time : 2018/11/10 @@ -28,6 +30,8 @@ public class RouterResult { * @param finalRequest 可能修改过的请求,也可能是和原始请求一样 */ public RouterResult(@NonNull RouterRequest originalRequest, @NonNull RouterRequest finalRequest) { + Utils.checkNullPointer(originalRequest); + Utils.checkNullPointer(finalRequest); this.mOriginalRequest = originalRequest; this.mFinalRequest = finalRequest; } diff --git a/ModuleBase/src/main/java/com/xiaojinzi/base/interceptor/DialogShowInterceptor.java b/ModuleBase/src/main/java/com/xiaojinzi/base/interceptor/DialogShowInterceptor.java index 37680ade..bfaf25bb 100644 --- a/ModuleBase/src/main/java/com/xiaojinzi/base/interceptor/DialogShowInterceptor.java +++ b/ModuleBase/src/main/java/com/xiaojinzi/base/interceptor/DialogShowInterceptor.java @@ -10,8 +10,11 @@ import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; +import io.reactivex.Completable; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Action; import io.reactivex.functions.BiConsumer; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; @@ -35,25 +38,19 @@ public void intercept(final Chain chain) throws Exception { } final ProgressDialog dialog = ProgressDialog.show(rawContext, "温馨提示", "耗时操作进行中,2秒后结束", true, false); dialog.show(); - Single - .fromCallable(new Callable() { - @Override - public String call() throws Exception { - return "test"; - } - }) + Disposable disposable = Completable.complete() .delay(2, TimeUnit.SECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) - .doOnEvent(new BiConsumer() { + .doOnEvent(new Consumer() { @Override - public void accept(String s, Throwable throwable) throws Exception { + public void accept(Throwable throwable) throws Exception { dialog.dismiss(); } }) - .subscribe(new Consumer() { + .subscribe(new Action() { @Override - public void accept(String s) throws Exception { + public void run() throws Exception { chain.proceed(chain.request()); } }, new Consumer() { From 89ef3fdd180fd1c5d311f2804cf6a5281a12b5e1 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Fri, 28 Aug 2020 15:55:53 +0800 Subject: [PATCH 12/18] feat(feat): RouterProcessor optimize --- .../main/java/com/xiaojinzi/component/RouterProcessor.java | 4 ++-- .../main/java/com/xiaojinzi/componentdemo/view/MainAct.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ComponentCompiler/src/main/java/com/xiaojinzi/component/RouterProcessor.java b/ComponentCompiler/src/main/java/com/xiaojinzi/component/RouterProcessor.java index 4fce64f0..3a55c5ef 100644 --- a/ComponentCompiler/src/main/java/com/xiaojinzi/component/RouterProcessor.java +++ b/ComponentCompiler/src/main/java/com/xiaojinzi/component/RouterProcessor.java @@ -336,9 +336,9 @@ public void accept(String key, RouterAnnoBean routerBean) { // 声明一个拦截器的集合. String interceptorListName = "interceptorList" + atomicInteger.incrementAndGet(); - initMapMethodSpecBuilder.addStatement("$N<$T> $N = new $T($L)", + initMapMethodSpecBuilder.addStatement("$N<$T> $N = new $N<$T>($L)", ComponentConstants.JAVA_LIST, pageInterceptorBeanTypeElement, interceptorListName, - ArrayList.class, routerBean.getTotalInterceptorSize()); + ComponentConstants.JAVA_ARRAYLIST, pageInterceptorBeanTypeElement, routerBean.getTotalInterceptorSize()); initMapMethodSpecBuilder.addStatement("$N.setPageInterceptors($N)", routerBeanName, interceptorListName); // 拦截器的代码的生成 diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java index b56ff60f..978675ad 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java @@ -130,7 +130,7 @@ public void testWebRouter(View view) { .forward(); } - public void testQuality(View view) throws URISyntaxException { + public void testQuality(View view) throws Exception { Router.withApi(AppApi.class) .goToTestQuality() .subscribe(); From f09d1b8ee39e9ef2833b0fe82a37b9c402ad7773 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 2 Sep 2020 10:51:00 +0800 Subject: [PATCH 13/18] feat(feat): update third lib version --- app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java | 2 -- dependencies.gradle | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java index 978675ad..1a2b6f7b 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/view/MainAct.java @@ -21,8 +21,6 @@ import com.xiaojinzi.component.impl.application.ModuleManager; import com.xiaojinzi.componentdemo.R; -import java.net.URISyntaxException; - /** * 启动界面 */ diff --git a/dependencies.gradle b/dependencies.gradle index bf00ce49..7ad2aa82 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,7 +7,7 @@ ext.versions = [ version_name : "1.0", support_lib : "28.0.0", // 第三方控件的版本号 - constraintLayout : '2.0.0-rc1', + constraintLayout : '2.0.1', rxjava : '2.2.19', rxandroid : "2.1.1", component_version : "1.8.3.3", From 748c2837ae9b875185c5fccb58dfddd91e6df6e5 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Tue, 8 Sep 2020 19:41:27 +0800 Subject: [PATCH 14/18] =?UTF-8?q?feat(feat):=20=E6=89=80=E6=9C=89=20MainTh?= =?UTF-8?q?read=20=E6=94=B9=E4=B8=BA=20UiThread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/anno/FragmentAnno.java | 4 +- .../component/anno/InterceptorAnno.java | 4 +- .../xiaojinzi/component/anno/ServiceAnno.java | 4 +- .../component/anno/ServiceMethodAnno.java | 4 +- .../component/anno/ServiceParameterAnno.java | 4 +- ...reateAnno.java => UiThreadCreateAnno.java} | 2 +- .../com/xiaojinzi/component/Component.java | 13 ++--- .../component/ComponentActivityStack.java | 4 +- .../application/IApplicationLifecycle.java | 5 +- .../application/IComponentApplication.java | 6 +-- .../fragment/IComponentHostFragment.java | 4 +- .../xiaojinzi/component/impl/BiCallback.java | 4 +- .../xiaojinzi/component/impl/Callback.java | 6 +-- .../xiaojinzi/component/impl/Navigator.java | 54 ++++++++++--------- .../com/xiaojinzi/component/impl/Router.java | 6 +-- .../component/impl/RouterCenter.java | 10 ++-- .../component/impl/RouterInterceptor.java | 4 +- .../component/impl/RouterListener.java | 11 ++-- .../component/impl/RouterRequest.java | 20 +++---- .../component/impl/RouterResult.java | 2 - .../xiaojinzi/component/impl/RouterUtil.java | 11 ++-- .../impl/interceptor/InterceptorCenter.java | 12 ++--- .../interceptor/ModuleInterceptorImpl.java | 8 +-- .../IComponentCenterInterceptor.java | 6 +-- .../IComponentHostInterceptor.java | 8 +-- .../interceptor/IComponentInterceptor.java | 4 +- .../component/router/IComponentRouter.java | 8 +-- .../component/support/CallbackAdapter.java | 10 ++-- .../component/support/IBaseLifecycle.java | 8 +-- .../component/support/IComponentCenter.java | 10 ++-- .../xiaojinzi/component/support/IHost.java | 4 +- .../xiaojinzi/component/support/Inject.java | 7 +-- .../component/support/OnRouterCancel.java | 6 +-- .../component/support/OnRouterError.java | 6 +-- .../support/RouterInterceptorCache.java | 4 +- .../component/support/RouterRequestHelp.java | 10 ++-- .../xiaojinzi/component/support/Utils.java | 4 +- .../xiaojinzi/component/impl/RxRouter.java | 24 ++++----- .../component2/view/TestInterceptorAct.java | 4 +- .../inter/component1/Component1Service.java | 4 +- .../inter/component2/Component2Service.java | 4 +- 41 files changed, 166 insertions(+), 167 deletions(-) rename ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/{MainThreadCreateAnno.java => UiThreadCreateAnno.java} (92%) diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/FragmentAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/FragmentAnno.java index 17f7c60f..a15747e2 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/FragmentAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/FragmentAnno.java @@ -1,6 +1,6 @@ package com.xiaojinzi.component.anno; -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; +import com.xiaojinzi.component.anno.support.UiThreadCreateAnno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ /** * 标记一个 Fragment, 方便路由到此注解标记的 Fragment */ -@MainThreadCreateAnno +@UiThreadCreateAnno @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.CLASS) public @interface FragmentAnno { diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/InterceptorAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/InterceptorAnno.java index 5fe10cf5..b9098624 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/InterceptorAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/InterceptorAnno.java @@ -1,6 +1,6 @@ package com.xiaojinzi.component.anno; -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; +import com.xiaojinzi.component.anno.support.UiThreadCreateAnno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ /** * 拦截器的注解,用这个注解标记的不是全局的拦截器,但是你可以使用特定的字符串访问到这个拦截器 */ -@MainThreadCreateAnno +@UiThreadCreateAnno @Target({ElementType.TYPE}) @Retention(RetentionPolicy.CLASS) public @interface InterceptorAnno { diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceAnno.java index 2c87c551..949f1f61 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceAnno.java @@ -1,6 +1,6 @@ package com.xiaojinzi.component.anno; -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; +import com.xiaojinzi.component.anno.support.UiThreadCreateAnno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ /** * 标记一个接口 */ -@MainThreadCreateAnno +@UiThreadCreateAnno @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.CLASS) public @interface ServiceAnno { diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceMethodAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceMethodAnno.java index d89fd350..4af107e9 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceMethodAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceMethodAnno.java @@ -1,6 +1,6 @@ package com.xiaojinzi.component.anno; -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; +import com.xiaojinzi.component.anno.support.UiThreadCreateAnno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ /** * 标记一个 Service 服务接口的方法是暴露的 */ -@MainThreadCreateAnno +@UiThreadCreateAnno @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.CLASS) public @interface ServiceMethodAnno { diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceParameterAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceParameterAnno.java index ebe81429..b074eb2d 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceParameterAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/ServiceParameterAnno.java @@ -1,6 +1,6 @@ package com.xiaojinzi.component.anno; -import com.xiaojinzi.component.anno.support.MainThreadCreateAnno; +import com.xiaojinzi.component.anno.support.UiThreadCreateAnno; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ /** * 标记一个 Service 服务接口的方法的参数是暴露的 */ -@MainThreadCreateAnno +@UiThreadCreateAnno @Target({ElementType.TYPE, ElementType.PARAMETER}) @Retention(RetentionPolicy.CLASS) public @interface ServiceParameterAnno { diff --git a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/MainThreadCreateAnno.java b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/UiThreadCreateAnno.java similarity index 92% rename from ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/MainThreadCreateAnno.java rename to ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/UiThreadCreateAnno.java index b443b14e..851f3643 100644 --- a/ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/MainThreadCreateAnno.java +++ b/ComponentApi/src/main/java/com/xiaojinzi/component/anno/support/UiThreadCreateAnno.java @@ -11,5 +11,5 @@ */ @Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.SOURCE) -public @interface MainThreadCreateAnno { +public @interface UiThreadCreateAnno { } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java index 8b33ca34..702b590d 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/Component.java @@ -7,6 +7,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.application.ModuleManager; import com.xiaojinzi.component.support.Inject; @@ -50,7 +51,7 @@ private Component() { * * @see Config 初始化的配置对象 */ - @MainThread + @UiThread public static void init(boolean isDebug, @NonNull Config config) { // 做必要的检查 if (isInit) { @@ -135,22 +136,22 @@ private static void checkInit() { } } - @MainThread + @UiThread public static void inject(@NonNull Object target) { inject(target, null, true, true); } - @MainThread + @UiThread public static void injectAttrValueFromIntent(@NonNull Object target, @Nullable Intent intent) { injectAttrValueFromBundle(target, intent == null ? null : intent.getExtras()); } - @MainThread + @UiThread public static void injectAttrValueFromBundle(@NonNull Object target, @Nullable Bundle bundle) { inject(target, bundle, true, false); } - @MainThread + @UiThread public static void injectService(@NonNull Object target) { inject(target, null, false, true); } @@ -163,7 +164,7 @@ public static void injectService(@NonNull Object target) { * @param isAutoWireAttrValue 是否注入属性值 * @param isAutoWireService 是否注入 Service */ - @MainThread + @UiThread private static void inject(@NonNull Object target, @Nullable Bundle bundle, boolean isAutoWireAttrValue, boolean isAutoWireService) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/ComponentActivityStack.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/ComponentActivityStack.java index 3bb21889..8c17ac03 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/ComponentActivityStack.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/ComponentActivityStack.java @@ -1,9 +1,9 @@ package com.xiaojinzi.component; import android.app.Activity; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.support.Utils; @@ -28,7 +28,7 @@ private static class Holder { private static ComponentActivityStack INSTANCE = new ComponentActivityStack(); } - @MainThread + @UiThread public static ComponentActivityStack getInstance() { return Holder.INSTANCE; } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IApplicationLifecycle.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IApplicationLifecycle.java index 5efaafd8..b5a44d80 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IApplicationLifecycle.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IApplicationLifecycle.java @@ -1,8 +1,7 @@ package com.xiaojinzi.component.application; -import android.support.annotation.MainThread; +import android.support.annotation.UiThread; -import com.xiaojinzi.component.ComponentConstants; import com.xiaojinzi.component.anno.ModuleAppAnno; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; import com.xiaojinzi.component.support.IBaseLifecycle; @@ -14,7 +13,7 @@ * 你可以实现此接口或者{@link IComponentApplication} 接口, 但是建议实现此接口. * 老接口 {@link IComponentApplication} 会在将来某个版本删除 */ -@MainThread +@UiThread @CheckClassNameAnno public interface IApplicationLifecycle extends IBaseLifecycle { } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IComponentApplication.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IComponentApplication.java index 811cae93..b2e187e7 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IComponentApplication.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/application/IComponentApplication.java @@ -1,15 +1,13 @@ package com.xiaojinzi.component.application; -import android.support.annotation.MainThread; +import android.support.annotation.UiThread; -import com.xiaojinzi.component.ComponentConstants; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; -import com.xiaojinzi.component.support.IBaseLifecycle; /** * @see IApplicationLifecycle */ -@MainThread +@UiThread @CheckClassNameAnno public interface IComponentApplication extends IApplicationLifecycle { } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/fragment/IComponentHostFragment.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/fragment/IComponentHostFragment.java index 08f36c59..055374c7 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/fragment/IComponentHostFragment.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/fragment/IComponentHostFragment.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.fragment; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.support.IBaseLifecycle; import com.xiaojinzi.component.support.IHost; @@ -20,7 +20,7 @@ public interface IComponentHostFragment extends IBaseLifecycle, IHost { * 第二:在注解驱动器中, 做了避免重复的操作 */ @NonNull - @MainThread + @UiThread Set getFragmentNameSet(); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/BiCallback.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/BiCallback.java index 64448941..b32a65ee 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/BiCallback.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/BiCallback.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.impl; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; import com.xiaojinzi.component.support.Function; @@ -26,7 +26,7 @@ public interface BiCallback extends OnRouterCancel, OnRouterError { * @param result 路由成功的对象 * @param t 返回的对象 */ - @MainThread + @UiThread void onSuccess(@NonNull RouterResult result, @NonNull T t); /** diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Callback.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Callback.java index e939213f..a068b43a 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Callback.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Callback.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.impl; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; import com.xiaojinzi.component.support.OnRouterCancel; @@ -31,7 +31,7 @@ public interface Callback extends OnRouterError, OnRouterCancel { * @see Navigator#navigate(Callback) * @see Navigator#navigateForResultCodeMatch(Callback, int) */ - @MainThread + @UiThread void onSuccess(@NonNull RouterResult result); /** @@ -40,7 +40,7 @@ public interface Callback extends OnRouterError, OnRouterCancel { * @param successResult 路由成功时候的返回对象,成功的对象 * @param errorResult 发生的错误对象 */ - @MainThread + @UiThread void onEvent(@Nullable RouterResult successResult, @Nullable RouterErrorResult errorResult); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java index b15f28d6..63cd4b1d 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java @@ -12,6 +12,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; @@ -194,7 +195,7 @@ public Navigator proxyBundle(@NonNull Bundle bundle) { } @Override - public Navigator intentConsumer(@Nullable @MainThread Consumer intentConsumer) { + public Navigator intentConsumer(@Nullable @UiThread Consumer intentConsumer) { super.intentConsumer(intentConsumer); return this; } @@ -212,7 +213,7 @@ public Navigator addIntentCategories(@Nullable String... categories) { } @Override - public Navigator beforAction(@Nullable @MainThread Action action) { + public Navigator beforAction(@Nullable @UiThread Action action) { super.beforAction(action); return this; } @@ -230,19 +231,19 @@ public Navigator afterStartAction(@Nullable Action action) { } @Override - public Navigator afterAction(@Nullable @MainThread Action action) { + public Navigator afterAction(@Nullable @UiThread Action action) { super.afterAction(action); return this; } @Override - public Navigator afterErrorAction(@Nullable @MainThread Action action) { + public Navigator afterErrorAction(@Nullable @UiThread Action action) { super.afterErrorAction(action); return this; } @Override - public Navigator afterEventAction(@Nullable @MainThread Action action) { + public Navigator afterEventAction(@Nullable @UiThread Action action) { super.afterEventAction(action); return this; } @@ -518,6 +519,7 @@ public Navigator query(@NonNull String queryName, double queryValue) { } @Override + @NonNull public RouterRequest build() { RouterRequest routerRequest = super.build(); // 如果是随机的 requestCode, 则生成 @@ -589,7 +591,7 @@ private void onCheckForResult() throws Exception { * @param callback 回调方法 */ @AnyThread - public void forwardForResultCode(@NonNull @MainThread final BiCallback callback) { + public void forwardForResultCode(@NonNull @UiThread final BiCallback callback) { navigateForResultCode(callback); } @@ -601,7 +603,7 @@ public void forwardForResultCode(@NonNull @MainThread final BiCallback @NonNull @AnyThread @CheckResult - public NavigationDisposable navigateForResultCode(@NonNull @MainThread final BiCallback callback) { + public NavigationDisposable navigateForResultCode(@NonNull @UiThread final BiCallback callback) { return navigateForResult(new BiCallback.Map(callback) { @NonNull @Override @@ -618,7 +620,7 @@ public Integer apply(@NonNull ActivityResult activityResult) throws Exception { */ @AnyThread public void forwardForResultCodeMatch( - @NonNull @MainThread final Callback callback, final int expectedResultCode) { + @NonNull @UiThread final Callback callback, final int expectedResultCode) { navigateForResultCodeMatch(callback, expectedResultCode); } @@ -631,7 +633,7 @@ public void forwardForResultCodeMatch( @AnyThread @CheckResult public NavigationDisposable navigateForResultCodeMatch( - @NonNull @MainThread final Callback callback, final int expectedResultCode) { + @NonNull @UiThread final Callback callback, final int expectedResultCode) { return navigateForResult(new BiCallback() { @Override public void onSuccess(@NonNull RouterResult result, @NonNull ActivityResult activityResult) { @@ -661,7 +663,7 @@ public void onCancel(@NonNull RouterRequest originalRequest) { */ @AnyThread public void forwardForIntentAndResultCodeMatch( - @NonNull @MainThread final BiCallback callback, final int expectedResultCode) { + @NonNull @UiThread final BiCallback callback, final int expectedResultCode) { navigateForIntentAndResultCodeMatch(callback, expectedResultCode); } @@ -674,7 +676,7 @@ public void forwardForIntentAndResultCodeMatch( @AnyThread @CheckResult public NavigationDisposable navigateForIntentAndResultCodeMatch( - @NonNull @MainThread final BiCallback callback, + @NonNull @UiThread final BiCallback callback, final int expectedResultCode) { return navigateForResult(new BiCallback.Map(callback) { @NonNull @@ -691,7 +693,7 @@ public Intent apply(@NonNull ActivityResult activityResult) throws Exception { * @param callback 回调方法 */ @AnyThread - public void forwardForIntent(@NonNull @MainThread final BiCallback callback) { + public void forwardForIntent(@NonNull @UiThread final BiCallback callback) { navigateForIntent(callback); } @@ -703,7 +705,7 @@ public void forwardForIntent(@NonNull @MainThread final BiCallback callb @NonNull @AnyThread @CheckResult - public NavigationDisposable navigateForIntent(@NonNull @MainThread final BiCallback callback) { + public NavigationDisposable navigateForIntent(@NonNull @UiThread final BiCallback callback) { return navigateForResult(new BiCallback.Map(callback) { @NonNull @Override @@ -719,7 +721,7 @@ public Intent apply(@NonNull ActivityResult activityResult) throws Exception { * @param callback 这里是为了拿返回的东西是不可以为空的 */ @AnyThread - public void forwardForResult(@NonNull @MainThread final BiCallback callback) { + public void forwardForResult(@NonNull @UiThread final BiCallback callback) { navigateForResult(callback); } @@ -733,7 +735,7 @@ public void forwardForResult(@NonNull @MainThread final BiCallback callback) { + @NonNull @UiThread final BiCallback callback) { Utils.checkNullPointer(callback, "callback"); return realNavigateForResult(callback); } @@ -762,7 +764,7 @@ public NavigationDisposable navigate() { * @param callback 路由的回调 */ @AnyThread - public void forward(@Nullable @MainThread final Callback callback) { + public void forward(@Nullable @UiThread final Callback callback) { navigate(callback); } @@ -770,7 +772,7 @@ public void forward(@Nullable @MainThread final Callback callback) { @AnyThread @CheckResult public synchronized NavigationDisposable navigate( - @Nullable @MainThread final Callback callback) { + @Nullable @UiThread final Callback callback) { // 构建请求对象 RouterRequest originalRequest = null; // 可取消对象 @@ -868,7 +870,7 @@ public void run() { * 但是没有那个必要去做这件事情了,等到有必要的时候再说,基本不会出现并且出现了也不是什么问题 */ @NonNull - @MainThread + @UiThread private NavigationDisposable doNavigateForResult(@NonNull final BiCallback biCallback) { // 直接 gg Utils.checkNullPointer(biCallback, "biCallback"); @@ -903,7 +905,7 @@ private NavigationDisposable doNavigateForResult(@NonNull final BiCallback getCustomInterceptors(@NonNull RouterRequest originalRequest, @Nullable List customInterceptors) throws InterceptorNotFoundException { if (customInterceptors == null || customInterceptors.isEmpty()) { @@ -1162,7 +1164,7 @@ public void cancel() { * 最后确认 {@link Uri} 的目标没被改变的时候 * 就可以加载 {@link DoActivityStartInterceptor} 执行跳转了. */ - @MainThread + @UiThread private static class PageInterceptor implements RouterInterceptor { @NonNull @@ -1203,7 +1205,7 @@ public void intercept(@NonNull Chain chain) throws Exception { * 最后确认 {@link Uri} 的目标没被改变的时候 * 就可以加载 {@link DoActivityStartInterceptor} 执行跳转了. */ - @MainThread + @UiThread private static class PageInterceptorUriCheckInterceptor implements RouterInterceptor { @NonNull @@ -1284,7 +1286,7 @@ public void intercept(@NonNull Chain chain) throws Exception { * 1.如果跳转的时候没有发生异常, 说明可以跳转过去 * 如果失败了进行降级处理 */ - @MainThread + @UiThread private static class DoActivityStartInterceptor implements RouterInterceptor { @NonNull @@ -1299,7 +1301,7 @@ public DoActivityStartInterceptor(@NonNull RouterRequest originalRequest) { * @throws Exception */ @Override - @MainThread + @UiThread public void intercept(final Chain chain) throws Exception { // 这个 request 对象已经不是最原始的了,但是可能是最原始的,就看拦截器是否更改了这个对象了 RouterRequest finalRequest = chain.request(); diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Router.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Router.java index dddd8c9b..c08ee573 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Router.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Router.java @@ -4,9 +4,9 @@ import android.content.Context; import android.os.Bundle; import android.support.annotation.AnyThread; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import com.xiaojinzi.component.Component; @@ -178,7 +178,7 @@ public static boolean isProxyIntentExist(@Nullable Bundle bundle) { * * @param act 要取消的 {@link Activity} */ - @MainThread + @UiThread public static void cancel(@NonNull Activity act) { Utils.checkMainThread(); synchronized (mNavigationDisposableList) { @@ -197,7 +197,7 @@ public static void cancel(@NonNull Activity act) { * * @param fragment {@link Fragment} */ - @MainThread + @UiThread public static void cancel(@NonNull Fragment fragment) { Utils.checkMainThread(); synchronized (mNavigationDisposableList) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java index 6b1bf3c1..b15db757 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterCenter.java @@ -5,9 +5,9 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; @@ -96,7 +96,7 @@ public boolean isSameTarget(@NonNull Uri uri1, @NonNull Uri uri2) { } @Override - @MainThread + @UiThread public void openUri(@NonNull final RouterRequest routerRequest) throws Exception { doOpenUri(routerRequest); } @@ -105,7 +105,7 @@ public void openUri(@NonNull final RouterRequest routerRequest) throws Exception * @param request 路由请求对象 * @param routerDegradeIntent 一个降级的 Intent */ - @MainThread + @UiThread public void routerDegrade(@NonNull RouterRequest request, @NonNull Intent routerDegradeIntent) throws Exception { String uriString = request.uri.toString(); if (routerDegradeIntent == null) { @@ -119,7 +119,7 @@ public void routerDegrade(@NonNull RouterRequest request, @NonNull Intent router * * @param request 路由请求对象 */ - @MainThread + @UiThread private void doOpenUri(@NonNull final RouterRequest request) throws Exception { if (!Utils.isMainThread()) { throw new NavigationFailException("Router must run on main thread"); @@ -163,7 +163,7 @@ private void doOpenUri(@NonNull final RouterRequest request) throws Exception { * @param request 请求对象 * @param intent Intent */ - @MainThread + @UiThread private void doStartIntent(@NonNull RouterRequest request, Intent intent) throws Exception { // 前置工作 diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterInterceptor.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterInterceptor.java index e8b92092..cfe86242 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterInterceptor.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterInterceptor.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.impl; import android.support.annotation.AnyThread; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; import com.xiaojinzi.component.support.RouterInterceptorCache; @@ -31,7 +31,7 @@ public interface RouterInterceptor { * * @param chain 拦截器执行连接器 */ - @MainThread + @UiThread void intercept(@NonNull Chain chain) throws Exception; /** diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterListener.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterListener.java index 427d1042..87dea433 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterListener.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterListener.java @@ -1,7 +1,8 @@ package com.xiaojinzi.component.impl; -import android.support.annotation.MainThread; + import android.support.annotation.NonNull; +import android.support.annotation.UiThread; /** * 路由监听器,目前就只有三种情况,其实还有 RxJava 支持的 RxRouter 成功的和失败的 @@ -9,7 +10,7 @@ * * @author xiaojinzi */ -@MainThread +@UiThread public interface RouterListener { /** @@ -17,7 +18,7 @@ public interface RouterListener { * * @param successResult 成功的对象 */ - @MainThread + @UiThread void onSuccess(@NonNull RouterResult successResult) throws Exception; /** @@ -25,7 +26,7 @@ public interface RouterListener { * * @param errorResult 失败的对象 */ - @MainThread + @UiThread void onError(RouterErrorResult errorResult) throws Exception; /** @@ -33,7 +34,7 @@ public interface RouterListener { * * @param originalRequest 最原始的请求对象 */ - @MainThread + @UiThread void onCancel(@NonNull RouterRequest originalRequest) throws Exception; } \ No newline at end of file diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java index 5fc4175d..0f2ed0d9 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterRequest.java @@ -6,9 +6,9 @@ import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.util.SparseArray; @@ -278,9 +278,8 @@ public final Activity getRawOrTopActivity() { /** * 这里转化的对象会比 {@link Builder} 对象中的参数少一个 {@link Builder#url} * 因为 uri 转化为了 scheme,host,path,queryMap 那么这时候就不需要 url 了 - * - * @return */ + @NonNull public Builder toBuilder() { Builder builder = new Builder(); @@ -411,32 +410,32 @@ public Builder fragment(@Nullable Fragment fragment) { return this; } - public Builder beforAction(@Nullable @MainThread Action action) { + public Builder beforAction(@Nullable @UiThread Action action) { this.beforAction = action; return this; } - public Builder beforStartAction(@Nullable @MainThread Action action) { + public Builder beforStartAction(@Nullable @UiThread Action action) { this.beforStartAction = action; return this; } - public Builder afterStartAction(@Nullable @MainThread Action action) { + public Builder afterStartAction(@Nullable @UiThread Action action) { this.afterStartAction = action; return this; } - public Builder afterAction(@Nullable @MainThread Action action) { + public Builder afterAction(@Nullable @UiThread Action action) { this.afterAction = action; return this; } - public Builder afterErrorAction(@Nullable @MainThread Action action) { + public Builder afterErrorAction(@Nullable @UiThread Action action) { this.afterErrorAction = action; return this; } - public Builder afterEventAction(@Nullable @MainThread Action action) { + public Builder afterEventAction(@Nullable @UiThread Action action) { this.afterEventAction = action; return this; } @@ -457,7 +456,7 @@ public Builder requestCode(@Nullable Integer requestCode) { * 更改的机会,最好别更改内部的参数等的信息,这里提供出来其实主要是可以让你调用Intent * 的 {@link Intent#addFlags(int)} 等方法,并不是给你修改内部的 bundle 的 */ - public Builder intentConsumer(@Nullable @MainThread Consumer intentConsumer) { + public Builder intentConsumer(@Nullable @UiThread Consumer intentConsumer) { this.intentConsumer = intentConsumer; return this; } @@ -718,6 +717,7 @@ public Builder query(@NonNull String queryName, double queryValue) { * * @return 可能会抛出一个运行时异常, 由于您的参数在构建 uri 的时候出现的异常 */ + @NonNull public RouterRequest build() { return new RouterRequest(this); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java index 03fba02b..48d805c2 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterResult.java @@ -48,8 +48,6 @@ public RouterRequest getOriginalRequest() { /** * 获取可能由拦截器修改过的 request 对象,大部分没有被修改的其实就是最原始的 request 对象 - * - * @return */ @NonNull public RouterRequest getFinalRequest() { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterUtil.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterUtil.java index 97155d73..9d1c93dd 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterUtil.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/RouterUtil.java @@ -7,6 +7,7 @@ import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; @@ -45,7 +46,7 @@ public void run() { } - @MainThread + @UiThread private static void cancelCallbackOnMainThread(@Nullable RouterRequest request, @Nullable final OnRouterCancel callback) { if (request == null) { @@ -72,7 +73,7 @@ public void run() { deliveryListener(null, errorResult, null); } - @MainThread + @UiThread private static void errorCallbackOnMainThread(@Nullable final Callback callback, @Nullable final BiCallback biCallback, @NonNull final RouterErrorResult errorResult) { @@ -115,7 +116,7 @@ public void run() { deliveryListener(successResult, null, null); } - @MainThread + @UiThread private static void successCallbackOnMainThread(@Nullable final Callback callback, @NonNull final RouterResult result) { Utils.checkNullPointer(result, "result"); @@ -126,7 +127,7 @@ private static void successCallbackOnMainThread(@Nullable final Callback callbac } // 执行 Request 中 的 afterCallback try { - RouterRequestHelp.executeAfterAction(result.getOriginalRequest()); + RouterRequestHelp.executeAfterAction(result.getFinalRequest()); } catch (Exception e) { throw new RouterRuntimeException("afterJumpCallback or afterEventCallback can't throw any exception!", e); } @@ -148,7 +149,7 @@ public void run() { }); } - @MainThread + @UiThread public static void deliveryListenerOnMainThread(@Nullable final RouterResult successResult, @Nullable final RouterErrorResult errorResult, @Nullable final RouterRequest cancelRequest) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/InterceptorCenter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/InterceptorCenter.java index ddb0bfdd..b7b4532f 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/InterceptorCenter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/InterceptorCenter.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.impl.interceptor; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.Component; import com.xiaojinzi.component.ComponentUtil; @@ -81,7 +81,7 @@ public static InterceptorCenter getInstance() { /** * 获取全局拦截器 */ - @MainThread + @UiThread public List getGlobalInterceptorList() { if (isInterceptorListHaveChange) { loadAllGlobalInterceptor(); @@ -135,7 +135,7 @@ public void unregister(@NonNull String host) { /** * 按顺序弄好所有全局拦截器 */ - @MainThread + @UiThread private void loadAllGlobalInterceptor() { mGlobalInterceptorList.clear(); List totalList = new ArrayList<>(); @@ -163,7 +163,7 @@ public int compare(InterceptorBean o1, InterceptorBean o2) { } @Nullable - @MainThread + @UiThread public IComponentHostInterceptor findModuleInterceptor(String host) { Utils.checkMainThread(); try { @@ -183,7 +183,7 @@ public IComponentHostInterceptor findModuleInterceptor(String host) { @Nullable @Override - @MainThread + @UiThread public RouterInterceptor getByName(@Nullable String interceptorName) { if (interceptorName == null) { return null; @@ -203,7 +203,7 @@ public RouterInterceptor getByName(@Nullable String interceptorName) { /** * 做拦截器的名称是否重复的工作 */ - @MainThread + @UiThread public void check() { Utils.checkMainThread(); Set set = new HashSet<>(); diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java index 1bf17954..9cac20b6 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java @@ -2,9 +2,9 @@ import android.app.Application; import android.support.annotation.CallSuper; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterInterceptor; import com.xiaojinzi.component.interceptor.IComponentHostInterceptor; @@ -48,7 +48,7 @@ public void onDestroy() { @Override @NonNull - @MainThread + @UiThread public List globalInterceptorList() { return Collections.emptyList(); } @@ -57,7 +57,7 @@ public List globalInterceptorList() { * 初始化拦截器的集合 */ @CallSuper - @MainThread + @UiThread protected void initInterceptorMap() { isInitMap = true; } @@ -82,7 +82,7 @@ public Map> getInterceptorMap() { @Override @Nullable - @MainThread + @UiThread public RouterInterceptor getByName(@Nullable String name) { if (name == null) { return null; diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentCenterInterceptor.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentCenterInterceptor.java index 49fa9658..58b4b1fc 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentCenterInterceptor.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentCenterInterceptor.java @@ -1,10 +1,10 @@ package com.xiaojinzi.component.interceptor; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; -import com.xiaojinzi.component.support.IComponentCenter; import com.xiaojinzi.component.impl.RouterInterceptor; +import com.xiaojinzi.component.support.IComponentCenter; import java.util.List; @@ -22,7 +22,7 @@ public interface IComponentCenterInterceptor extends IComponentInterceptor, ICom * @return 全局的拦截器列表 */ @NonNull - @MainThread + @UiThread List getGlobalInterceptorList(); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentHostInterceptor.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentHostInterceptor.java index 2b9927ca..d0d9e768 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentHostInterceptor.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentHostInterceptor.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.interceptor; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterInterceptor; import com.xiaojinzi.component.impl.interceptor.InterceptorBean; @@ -26,7 +26,7 @@ public interface IComponentHostInterceptor * 让外面使用的地方去初始化也可以 */ @NonNull - @MainThread + @UiThread List globalInterceptorList(); /** @@ -35,14 +35,14 @@ public interface IComponentHostInterceptor * 拦截器做检查 */ @NonNull - @MainThread + @UiThread Set getInterceptorNames(); /** * 获取拦截器集合 */ @NonNull - @MainThread + @UiThread Map> getInterceptorMap(); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentInterceptor.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentInterceptor.java index 847faa7c..fad3e1c6 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentInterceptor.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/interceptor/IComponentInterceptor.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.interceptor; -import android.support.annotation.MainThread; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterInterceptor; @@ -19,7 +19,7 @@ public interface IComponentInterceptor { * @param name if name is null,return null */ @Nullable - @MainThread + @UiThread RouterInterceptor getByName(@Nullable String name); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/router/IComponentRouter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/router/IComponentRouter.java index dc60e603..3dec8483 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/router/IComponentRouter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/router/IComponentRouter.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.router; import android.net.Uri; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterInterceptor; import com.xiaojinzi.component.impl.RouterRequest; @@ -24,7 +24,7 @@ public interface IComponentRouter { * * @throws android.content.ActivityNotFoundException */ - @MainThread + @UiThread void openUri(@NonNull RouterRequest routerRequest) throws Exception; /** @@ -64,7 +64,7 @@ public interface IComponentRouter { * @throws Exception */ @NonNull - @MainThread + @UiThread List listPageInterceptors(@NonNull Uri uri) throws Exception; /** @@ -72,7 +72,7 @@ public interface IComponentRouter { * 获取该 URI 对应的降级需要执行的拦截器 */ @NonNull - @MainThread + @UiThread List listDegradeInterceptors(@NonNull Uri uri) throws Exception; } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/CallbackAdapter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/CallbackAdapter.java index eb3202f8..79b37d7c 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/CallbackAdapter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/CallbackAdapter.java @@ -1,8 +1,8 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.Callback; import com.xiaojinzi.component.impl.RouterErrorResult; @@ -15,25 +15,25 @@ public class CallbackAdapter implements Callback { @Override - @MainThread + @UiThread public void onSuccess(@NonNull RouterResult result) { // empty } @Override - @MainThread + @UiThread public void onError(RouterErrorResult errorResult) { // empty } @Override - @MainThread + @UiThread public void onEvent(@Nullable RouterResult successResult, @Nullable RouterErrorResult errorResult) { // empty } @Override - @MainThread + @UiThread public void onCancel(@NonNull RouterRequest originalRequest) { // empty } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IBaseLifecycle.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IBaseLifecycle.java index 13f35b9d..6ca9aebc 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IBaseLifecycle.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IBaseLifecycle.java @@ -1,22 +1,22 @@ package com.xiaojinzi.component.support; import android.app.Application; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; /** * 基础的生命周期接口 */ -@MainThread +@UiThread @CheckClassNameAnno public interface IBaseLifecycle { - @MainThread + @UiThread void onCreate(@NonNull Application app); - @MainThread + @UiThread void onDestroy(); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IComponentCenter.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IComponentCenter.java index 01e75669..7d59294b 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IComponentCenter.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IComponentCenter.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; /** * 模块管理中心注册的类 @@ -13,7 +13,7 @@ public interface IComponentCenter { * * @param t 注册的目标 */ - @MainThread + @UiThread void register(T t); /** @@ -21,7 +21,7 @@ public interface IComponentCenter { * * @param host 需要注册的 host */ - @MainThread + @UiThread void register(@NonNull String host); /** @@ -29,7 +29,7 @@ public interface IComponentCenter { * * @param t 反注册的目标 */ - @MainThread + @UiThread void unregister(T t); /** @@ -37,7 +37,7 @@ public interface IComponentCenter { * * @param host 反注册的 host */ - @MainThread + @UiThread void unregister(@NonNull String host); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IHost.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IHost.java index 4b0bdf0d..c4cced1c 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IHost.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/IHost.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; /** * 获取 Host 的接口 @@ -12,7 +12,7 @@ public interface IHost { * 获取模块的 host */ @NonNull - @MainThread + @UiThread String getHost(); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Inject.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Inject.java index 99a113d7..bce49133 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Inject.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Inject.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import com.xiaojinzi.component.anno.support.CheckClassNameAnno; @@ -19,7 +20,7 @@ public interface Inject { * * @param target 目标 */ - @MainThread + @UiThread void injectAttrValue(@NonNull T target); /** @@ -28,7 +29,7 @@ public interface Inject { * @param target 目标 * @param bundle 数据源的 bundle */ - @MainThread + @UiThread void injectAttrValue(@NonNull T target, @NonNull Bundle bundle); /** @@ -36,7 +37,7 @@ public interface Inject { * * @param target 目标 */ - @MainThread + @UiThread void injectService(@NonNull T target); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterCancel.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterCancel.java index 936673ce..08f31b7e 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterCancel.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterCancel.java @@ -1,11 +1,9 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterRequest; -import com.xiaojinzi.component.support.NavigationDisposable; /** * 被取消了回调接口 @@ -20,7 +18,7 @@ public interface OnRouterCancel { * 的时候不会调用这个方法,因为这时候是不可以取消的,因为压根就没开始,当 request 构建出来了 * 这时候就可以取消了,所以在真正取消的时候,一定会有这个参数的 */ - @MainThread + @UiThread void onCancel(@Nullable RouterRequest originalRequest); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterError.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterError.java index 6d2b6ff4..1a00db31 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterError.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/OnRouterError.java @@ -1,11 +1,9 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterErrorResult; -import com.xiaojinzi.component.support.NavigationDisposable; /** * 被取消了回调接口 @@ -17,7 +15,7 @@ public interface OnRouterError { * * @param errorResult 路由失败的对象 */ - @MainThread + @UiThread void onError(@NonNull RouterErrorResult errorResult); } diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterInterceptorCache.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterInterceptorCache.java index 3c4d62ef..d66ec835 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterInterceptorCache.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterInterceptorCache.java @@ -2,9 +2,9 @@ import android.app.Application; import android.content.Context; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.Component; import com.xiaojinzi.component.anno.RouterAnno; @@ -38,7 +38,7 @@ private RouterInterceptorCache() { * 内部做了缓存,如果缓存中没有就会反射创建拦截器对象 */ @Nullable - @MainThread + @UiThread public static synchronized RouterInterceptor getInterceptorByClass(@NonNull Class tClass) { RouterInterceptor t = ClassCache.get(tClass); if (t != null) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterRequestHelp.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterRequestHelp.java index e8902f44..e29efd8b 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterRequestHelp.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/RouterRequestHelp.java @@ -1,7 +1,7 @@ package com.xiaojinzi.component.support; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; +import android.support.annotation.UiThread; import com.xiaojinzi.component.impl.RouterRequest; @@ -10,7 +10,7 @@ */ public class RouterRequestHelp { - @MainThread + @UiThread public static void executeBeforAction(@NonNull RouterRequest request) throws Exception { Utils.checkNullPointer(request, "request"); if (request.beforAction != null) { @@ -18,7 +18,7 @@ public static void executeBeforAction(@NonNull RouterRequest request) throws Exc } } - @MainThread + @UiThread public static void executeAfterAction(@NonNull RouterRequest request) throws Exception { Utils.checkNullPointer(request, "request"); if (request.afterAction != null) { @@ -27,7 +27,7 @@ public static void executeAfterAction(@NonNull RouterRequest request) throws Exc executeAfterEventAction(request); } - @MainThread + @UiThread public static void executeAfterErrorAction(@NonNull RouterRequest request) throws Exception { Utils.checkNullPointer(request, "request"); if (request.afterErrorAction != null) { @@ -36,7 +36,7 @@ public static void executeAfterErrorAction(@NonNull RouterRequest request) throw executeAfterEventAction(request); } - @MainThread + @UiThread public static void executeAfterEventAction(@NonNull RouterRequest request) throws Exception { Utils.checkNullPointer(request, "request"); if (request.afterEventAction != null) { diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Utils.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Utils.java index 797c683c..868f81b1 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Utils.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/support/Utils.java @@ -9,9 +9,9 @@ import android.os.Handler; import android.os.Looper; import android.support.annotation.AnyThread; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import com.xiaojinzi.component.Component; import com.xiaojinzi.component.error.RouterRuntimeException; @@ -271,7 +271,7 @@ public void run() { @AnyThread @SuppressLint("WrongThread") - public static void mainThreadAction(@NonNull @MainThread final Action action) { + public static void mainThreadAction(@NonNull @UiThread final Action action) { if (isMainThread()) { action.run(); } else { diff --git a/ComponentRxImpl/src/main/java/com/xiaojinzi/component/impl/RxRouter.java b/ComponentRxImpl/src/main/java/com/xiaojinzi/component/impl/RxRouter.java index 6d79bf9b..c500c2dc 100644 --- a/ComponentRxImpl/src/main/java/com/xiaojinzi/component/impl/RxRouter.java +++ b/ComponentRxImpl/src/main/java/com/xiaojinzi/component/impl/RxRouter.java @@ -5,9 +5,9 @@ import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.CheckResult; -import android.support.annotation.MainThread; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.annotation.UiThread; import android.support.v4.app.Fragment; import android.util.SparseArray; @@ -89,44 +89,44 @@ private RxNavigator(@NonNull Fragment fragment) { } @Override - public RxNavigator beforAction(@NonNull @MainThread Action action) { + public RxNavigator beforAction(@NonNull @UiThread Action action) { super.beforAction(action); return this; } @Override - public RxNavigator beforStartAction(@NonNull @MainThread Action action) { + public RxNavigator beforStartAction(@NonNull @UiThread Action action) { super.beforStartAction(action); return this; } @Override - public RxNavigator afterStartAction(@NonNull @MainThread Action action) { + public RxNavigator afterStartAction(@NonNull @UiThread Action action) { super.afterStartAction(action); return this; } @Override - public RxNavigator afterAction(@NonNull @MainThread Action action) { + public RxNavigator afterAction(@NonNull @UiThread Action action) { super.afterAction(action); return this; } @Override - public RxNavigator afterErrorAction(@Nullable @MainThread Action action) { + public RxNavigator afterErrorAction(@Nullable @UiThread Action action) { super.afterErrorAction(action); return this; } @Override - public RxNavigator afterEventAction(@Nullable @MainThread Action action) { + public RxNavigator afterEventAction(@Nullable @UiThread Action action) { super.afterEventAction(action); return this; } @Override public RxNavigator intentConsumer( - @NonNull @MainThread com.xiaojinzi.component.support.Consumer intentConsumer) { + @NonNull @UiThread com.xiaojinzi.component.support.Consumer intentConsumer) { super.intentConsumer(intentConsumer); return this; } @@ -589,7 +589,7 @@ public void subscribe(final CompletableEmitter emitter) throws Exception { // 可能是一个 空实现,这些个回调都是回调在主线程的 final NavigationDisposable navigationDisposable = navigate(new CallbackAdapter() { @Override - @MainThread + @UiThread public void onSuccess(@NonNull RouterResult routerResult) { super.onSuccess(routerResult); if (emitter != null && !emitter.isDisposed()) { @@ -598,7 +598,7 @@ public void onSuccess(@NonNull RouterResult routerResult) { } @Override - @MainThread + @UiThread public void onError(@NonNull RouterErrorResult errorResult) { super.onError(errorResult); RxHelp.onErrorSolve(emitter, errorResult.getError()); @@ -660,7 +660,7 @@ private static void onErrorSolve(@NonNull CompletableEmitter emitter, @NonNull T * 发射错误,目前这些个发射错误都是为了 {@link RxRouter} 写的,发射的错误和正确的 item 被发射都应该 * 最终发射在主线程 */ - private static void onErrorEmitter(@MainThread final SingleEmitter emitter, + private static void onErrorEmitter(@UiThread final SingleEmitter emitter, @NonNull final Throwable e) { if (emitter == null || emitter.isDisposed()) { return; @@ -684,7 +684,7 @@ public void run() { * @param emitter {@link Completable} 的发射器 * @param e 跑出的异常 */ - private static void onErrorEmitter(@MainThread final CompletableEmitter emitter, + private static void onErrorEmitter(@UiThread final CompletableEmitter emitter, @NonNull final Throwable e) { if (emitter == null || emitter.isDisposed()) { return; diff --git a/Module2/src/main/java/com/xiaojinzi/component2/view/TestInterceptorAct.java b/Module2/src/main/java/com/xiaojinzi/component2/view/TestInterceptorAct.java index 07ccfa27..06a935c0 100644 --- a/Module2/src/main/java/com/xiaojinzi/component2/view/TestInterceptorAct.java +++ b/Module2/src/main/java/com/xiaojinzi/component2/view/TestInterceptorAct.java @@ -1,11 +1,13 @@ package com.xiaojinzi.component2.view; +import com.xiaojinzi.base.interceptor.TimeConsumingInterceptor; import com.xiaojinzi.base.view.BaseAct; import com.xiaojinzi.component.anno.RouterAnno; @RouterAnno( path = "testInterceptor", - interceptorNames = "testInterceptor" + interceptorNames = "testInterceptor", + interceptors = TimeConsumingInterceptor.class ) public class TestInterceptorAct extends BaseAct { } diff --git a/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component1/Component1Service.java b/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component1/Component1Service.java index 297d46f2..99ba8aab 100644 --- a/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component1/Component1Service.java +++ b/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component1/Component1Service.java @@ -1,10 +1,10 @@ package com.xiaojinzi.base.service.inter.component1; -import android.support.annotation.MainThread; +import android.support.annotation.UiThread; import io.reactivex.Single; -@MainThread +@UiThread public interface Component1Service { void doSomeThing(); diff --git a/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component2/Component2Service.java b/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component2/Component2Service.java index f57edf34..69b0cbce 100644 --- a/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component2/Component2Service.java +++ b/ModuleBase/src/main/java/com/xiaojinzi/base/service/inter/component2/Component2Service.java @@ -1,13 +1,13 @@ package com.xiaojinzi.base.service.inter.component2; -import android.support.annotation.MainThread; +import android.support.annotation.UiThread; /** * time : 2018/11/27 * * @author : xiaojinzi */ -@MainThread +@UiThread public interface Component2Service { void doSomeThing(); From 451180b74e081172af3ca53248442caa39f4b2f7 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Wed, 9 Sep 2020 09:23:36 +0800 Subject: [PATCH 15/18] feat(feat): change readme --- changelog.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 86c086c4..0cb453d7 100644 --- a/changelog.md +++ b/changelog.md @@ -2,7 +2,13 @@ #### [v1.8.3.3](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.3) - 删除 1.8.3.1 增加的 Service 生命周期的功能. 实践得知, 这功能并不正确 - ServiceManager 的反注册方法改为没有返回值. -- +- @MainThread 注解全都改为 @UiThread +- afterAction 的执行用的 request 修复为 finalRequest, 而不是 originRequest +- 增加一些方法的 @NonNull 注解 +- 修复 RouterRequest的bundle变为RouterRequest.Builder.Bundle 地址传递的问题, 应该为值传递 +- 增加模块加载失败时候的 url 链接, 可以帮助排查错误 +- 调整 Logo 输出的位置 +- 修复生成的路由表的 ArrayList 的泛型警告问题 #### [v1.8.3.2](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.2) - 修复 void method(Context context, Callback callback); 这中 Api 接口方法生成代码失败的问题 From c4c167dc8f95007e7d13f50fc94c312ef0567c4f Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Tue, 15 Sep 2020 15:11:48 +0800 Subject: [PATCH 16/18] feat(feat): change readme --- README.md | 1 + .../java/com/xiaojinzi/componentdemo/CustomerRouterImpl.java | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a06d5d76..28a0650e 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ - [x] `H5` 发起路由不需要关心目标界面需要做的先决条件(框架的[页面拦截器](https://github.com/xiaojinzi123/Component/wiki/%E5%90%8D%E8%AF%8D%E8%A7%A3%E9%87%8A#%E9%A1%B5%E9%9D%A2%E6%8B%A6%E6%88%AA%E5%99%A8)已经帮您做完) - [x] 支持原生的[跳转动画](https://github.com/xiaojinzi123/Component/wiki/%E8%B7%B3%E8%BD%AC-%E5%8A%A8%E7%94%BB) - [x] 支持跳转 `Fragment`(也就是跨组件获取`Fragment`) + - [x] 支持[单 Activity 多 Fragment 架构](https://github.com/xiaojinzi123/Component/wiki/%E5%8D%95-Activity-%E5%A4%9A-Fragment) - [x] 路由拦截器执行线程设计是主线程, 整体是异步的(这点很多人不理解, 没有关系. 先用起来之后在慢慢理解) - 在路由拦截器的执行线程的设计上,考虑到用户平时书写的 `90%` 代码都是在主线程的,
所以路由拦截器的执行线程也设计为主线程执行,可以让您放心的操作 `UI`、弹框等操作.
同时提供 `Callback` 机制可以在拦截器中做任何耗时的任务
这点绝对是压倒性的优势,不仅整体是 `异步` 的,而且拦截器中能像平常一样写实现的代码 - [x] 路由的取消,基本上没有路由框架支持路由的取消,这也是一个很大的优势! diff --git a/app/src/main/java/com/xiaojinzi/componentdemo/CustomerRouterImpl.java b/app/src/main/java/com/xiaojinzi/componentdemo/CustomerRouterImpl.java index bda965e7..1c1d5a18 100644 --- a/app/src/main/java/com/xiaojinzi/componentdemo/CustomerRouterImpl.java +++ b/app/src/main/java/com/xiaojinzi/componentdemo/CustomerRouterImpl.java @@ -27,7 +27,6 @@ public class CustomerRouterImpl { /** * 自定义实现跳转到打电话的界面,并且自动完成打电话权限的申请 */ - @Nullable @RouterAnno( host = ModuleConfig.System.NAME, path = ModuleConfig.System.CALL_PHONE, @@ -49,7 +48,6 @@ public static Intent callPhoneIntent(@NonNull RouterRequest request, @NonNull Ro * @param request * @return */ - @Nullable @RouterAnno( host = ModuleConfig.System.NAME, path = ModuleConfig.System.TAKE_PHONE, From 92cb37baff7687bb9e259df6eb3b8ac6b727174d Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Tue, 15 Sep 2020 21:02:08 +0800 Subject: [PATCH 17/18] feat(feat): add component_asm_disable to disable asm --- .../component/plugin/ComponentPlugin.java | 12 ++++++++++-- Module1/build.gradle | 2 +- Module2/build.gradle | 2 +- ModuleBase/build.gradle | 2 +- ModuleHelp/build.gradle | 2 +- ModuleUser/build.gradle | 2 +- .../1.8.3.3/component-plugin-1.8.3.3.jar | Bin 25078 -> 25215 bytes .../1.8.3.3/component-plugin-1.8.3.3.jar.md5 | 2 +- .../1.8.3.3/component-plugin-1.8.3.3.jar.sha1 | 2 +- .../component-plugin/maven-metadata.xml | 2 +- .../component-plugin/maven-metadata.xml.md5 | 2 +- .../component-plugin/maven-metadata.xml.sha1 | 2 +- app/build.gradle | 2 +- build.gradle | 5 +++-- changelog.md | 8 +++++--- 15 files changed, 29 insertions(+), 18 deletions(-) diff --git a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.java b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.java index ded21202..feff3fe0 100644 --- a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.java +++ b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.java @@ -25,18 +25,26 @@ public class ComponentPlugin implements Plugin { public static final String ROUTER_FOLDER = "component_router_doc_folder"; - public static final String ROUTER_ENABLE = "componnet_router_doc_enable"; + public static final String ROUTER_ENABLE = "component_router_doc_enable"; @Override public void apply(final Project project) { BaseAppModuleExtension appModuleExtension = (BaseAppModuleExtension) project.getProperties().get("android"); + Object asmDisable = project.findProperty("component_asm_disable"); Object asmUtilOutputPath = project.findProperty("component_asm_util_class_output_path"); + boolean asmDisableBool = false; + if (asmDisable instanceof Boolean) { + asmDisableBool = (boolean) asmDisable; + } // may be null String asmUtilOutputPathStr = null; if (asmUtilOutputPath instanceof String) { asmUtilOutputPathStr = (String) asmUtilOutputPath; } - appModuleExtension.registerTransform(new ModifyASMUtilTransform(asmUtilOutputPathStr)); + // 不禁用的话, 才注册 + if (!asmDisableBool) { + appModuleExtension.registerTransform(new ModifyASMUtilTransform(asmUtilOutputPathStr)); + } // 生成文档功能的 routerDocTask(project); cleanTask(project); diff --git a/Module1/build.gradle b/Module1/build.gradle index a4e9a025..bb306ab0 100644 --- a/Module1/build.gradle +++ b/Module1/build.gradle @@ -14,7 +14,7 @@ android { arguments = [ "HOST" : "component1", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/Module2/build.gradle b/Module2/build.gradle index 01e2a844..e17add10 100644 --- a/Module2/build.gradle +++ b/Module2/build.gradle @@ -19,7 +19,7 @@ android { arguments = [ "HOST" : "component2", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/ModuleBase/build.gradle b/ModuleBase/build.gradle index 4b52aef4..059a5238 100644 --- a/ModuleBase/build.gradle +++ b/ModuleBase/build.gradle @@ -13,7 +13,7 @@ android { arguments = [ "HOST" : "base", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/ModuleHelp/build.gradle b/ModuleHelp/build.gradle index be7e1b4c..ca1ef5b8 100644 --- a/ModuleHelp/build.gradle +++ b/ModuleHelp/build.gradle @@ -16,7 +16,7 @@ android { arguments = [ "HOST" : "help", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/ModuleUser/build.gradle b/ModuleUser/build.gradle index 3083e15a..d756b5d8 100644 --- a/ModuleUser/build.gradle +++ b/ModuleUser/build.gradle @@ -17,7 +17,7 @@ android { arguments = [ "HOST" : "user", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar index e75c8601ec1fe1cf2a5c403f53e5795a7346be7d..865d4feec27537bd65f205aa1a059d14ddda78de 100644 GIT binary patch delta 7760 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 delta 7663 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 A1^@s6 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 index ef690630..6d1656d5 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.md5 @@ -1 +1 @@ -3d7fd58a9d186bf07c0199bb8992c167 \ No newline at end of file +53e7f77768a5218f4ec329ab54d623c3 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 index d7e91d2e..bc698a67 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.8.3.3/component-plugin-1.8.3.3.jar.sha1 @@ -1 +1 @@ -a964c269fcf734f4fc055fdafc1b8099c8a1ad3a \ No newline at end of file +a0604c81efd6405143aa687cd218dd5ca928f31e \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml index 58cbc16e..6374d5e7 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml @@ -21,6 +21,6 @@ 1.8.3.2 1.8.3.3 - 20200812094422 + 20200915125221 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 index 6ea00578..e2407794 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 @@ -1 +1 @@ -d8d1734d153de19d59195a4984af40cb \ No newline at end of file +15087436f9aa56605774b1111a2cfb86 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 index 9715b687..c8443a1f 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 @@ -1 +1 @@ -afe4125b4160286372c1e9a2fb460f7475d9d403 \ No newline at end of file +6fc795bf30b34f791466870e5edf2dfa4bab65e4 \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 0258a0c0..57d9621b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ android { arguments = [ "HOST" : "app", "RouterDocFolder": project.property("component_router_doc_folder"), - "RouterDocEnable": String.valueOf(project.property("componnet_router_doc_enable")) + "RouterDocEnable": String.valueOf(project.property("component_router_doc_enable")) ] } } diff --git a/build.gradle b/build.gradle index dff4e39d..6e5aec35 100644 --- a/build.gradle +++ b/build.gradle @@ -4,13 +4,14 @@ buildscript { apply from: "dependencies.gradle" - ext.kotlin_version = '1.4.0' + ext.kotlin_version = '1.4.10' ext.component_group_id = "com.xiaojinzi" ext.isDependMavenOnline = false // ext.component_asm_util_class_output_path = "./Temp/ASMUtil.class" + ext.component_asm_disable = false // 注解生成器生成的文件 json 信息都在这里面 ext.component_router_doc_folder = "./Doc" - ext.componnet_router_doc_enable = false + ext.component_router_doc_enable = false repositories { google() diff --git a/changelog.md b/changelog.md index 0cb453d7..bf025fd8 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,8 @@ - 增加模块加载失败时候的 url 链接, 可以帮助排查错误 - 调整 Logo 输出的位置 - 修复生成的路由表的 ArrayList 的泛型警告问题 +- 修改 componnet 拼写错误的问题. +- 增加 component_asm_disable 配置, 可以让 Gradle 插件禁用 ASM 的功能. 因为有些人就只用 RouterDoc 的功能 #### [v1.8.3.2](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.3.2) - 修复 void method(Context context, Callback callback); 这中 Api 接口方法生成代码失败的问题 @@ -30,10 +32,10 @@ #### [v1.8.2.1](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.2.1) - 修复之前修改 `impl` 模块的包名引起的 `ProxtActivity` 失效的问题 -- `router` 文档增加控制是否生成文档的 `boolean` 的开关. `componnet_router_doc_enable` - - 配置方式和 `componnet_router_doc_folder` 一致. 比如 ext.componnet_router_doc_enable = true +- `router` 文档增加控制是否生成文档的 `boolean` 的开关. `component_router_doc_enable` + - 配置方式和 `componnet_router_doc_folder` 一致. 比如 ext.component_router_doc_enable = true - 同时注解驱动器的 `RouterDoc` 属性配置改为 `RouterDocFolder` -- 注解驱动器也增加一个文档是否生成的开关 `RouterDocEable`, 一般 `RouterDocEable` 这个值随着 `componnet_router_doc_enable` 变化即可 +- 注解驱动器也增加一个文档是否生成的开关 `RouterDocEable`, 一般 `RouterDocEable` 这个值随着 `component_router_doc_enable` 变化即可 #### [v1.8.2](https://github.com/xiaojinzi123/Component/releases/tag/v1.8.2) From 7e586292991873532938bdd1384c87ad55695835 Mon Sep 17 00:00:00 2001 From: xiaojinzi Date: Tue, 15 Sep 2020 21:16:57 +0800 Subject: [PATCH 18/18] feat(feat): solve conflict --- .../src/main/java/com/xiaojinzi/component/impl/Navigator.java | 2 +- .../component/impl/interceptor/ModuleInterceptorImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java index 74aff1cf..e208d911 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/Navigator.java @@ -9,9 +9,9 @@ import android.os.Parcelable; import androidx.annotation.AnyThread; import androidx.annotation.CheckResult; -import androidx.annotation.MainThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.UiThread; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; diff --git a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java index 2891bc3c..ae299d9d 100644 --- a/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java +++ b/ComponentImpl/src/main/java/com/xiaojinzi/component/impl/interceptor/ModuleInterceptorImpl.java @@ -4,7 +4,7 @@ import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.MainThread; +import androidx.annotation.UiThread; import com.xiaojinzi.component.impl.RouterInterceptor; import com.xiaojinzi.component.interceptor.IComponentHostInterceptor;