android模块,android模块间通信

Android模块化页面跳转Scheme

Android模块化页面跳转Scheme

公司主营业务:成都网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出平乡免费做网站回馈大家。

Github

通过注解实现Uri页面跳转

支持参数自动解析

使用场景:

1、应用内服务端下发uri进行页面跳转

2、通知栏点击,携带uri进行页面跳转

3、其他应用通过uri调起进行页面跳转

注:activity的注解格式:group/path

group为各个模块的唯一字符串,不同模块不可重复

接入:

使用姿势:

根build.gradle

module依赖:

使用姿势:

场景1:应用内服务端下发uri进行页面跳转

1、在需要支持uri跳转的Activity增加注解@SchemePath("{随意填,唯一字符串}")

2、跳转事件

注:参数支持

uri支持参数,如" scheme://ModuleA/Activity?data=1time=20200714hasData=true "

Activity的参数增加@SchemeExtra注解,如

场景2:通知栏点击,携带uri进行页面跳转

1、应用首页Activity增加注解@SchemePath("{随意填}")

2、application调用初始化

3、启动页,通知栏点击入口

场景三:其他应用通过uri调起进行页面跳转

1、注册中转activity

Android 模块之旅:ARoutrer框架使用教程

随着公司项目越来越大,人员增多,项目会出现难维护、新人入职后,需要花费很多时间去熟悉项目。最重要的是,每次编译时间真的太久了!!!为了解决这个问题,项目重构、模块化需要提上日程。项目拆分成模块之后,页面的跳转就不能直接startActivity 调用具体的activity了,因为这个Activity已经在另外一个模块中,直接用显示引用是提示不出来的,这时需要通过借助路由库来实现页面的跳转,当然通过反射的方式也是可以跳转到对应页面的。通过这样的路由跳转,而不是显示引用,就达到了模块之间解耦的目的,在不需要的时候,可以不需要引入这个模块编译,提高开发速度,发布的时候又能很方便的集成进来,功能不受影响,这就实现了模块化的第一步。路由框架推荐使用阿里开源的ARouter路由框架,毕竟是大厂开源的框架,稳定性、可靠性也相对较高。

路由路径,我们可以封装一个 RouterManger 工具类放在 moudle_base 模块中,统一管理整个项目的 Path 及路由框架的初始化操作, 示例如下:

我们经常需要在目标页面中配置一些属性,比方说"是否需要登陆"之类的

可以通过 Route 注解中的 extras 属性进行扩展,这个属性是一个 int值,换句话说,单个int有4字节,也就是32位,可以配置32个开关

剩下的可以自行发挥,通过字节操作可以标识32个开关,通过开关标记目标页面的一些属性,在拦截器中可以拿到这个标记进行业务逻辑判断

ARouter更加详细的使用教程可以前往官方GitHub查阅,上述为个人使用过程中觉得需要记录下来东西,不足之处,敬请见谅

Android核心模块结构层次有哪些呢

Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。

根据Android的软件框图,其Android核心模块结构自下而上分为以下几个层次:

第一、操作系统层(OS)

第二、各种库(Libraries)和Android 运行环境(RunTime)

第三、应用程序框架(Application Framework)

第四、应用程序(Application)

Android模块化之MicroModule(微信Pins工程)

相信你看过微信关于模块化的分享 《微信Android模块化架构重构实践》 ,也注意到里面提到的pins工程结构。

作者是这样描述的 ------“pins工程能在module之内再次构建完整的多子工程结构,通过project.properties来指定编译依赖关系。通过依赖关系在编译时找到所有的资源和源码路径。”

仔细推敲这句话的意思,应该能知道它实现的基本原理------通过设置sourceSets指定多个java、res等路径.

有关sourceSets的介绍:

但是,有一个问题需要要知道的是,一个module只能指定一个AndroidManifest文件,pins工程中包含了多个AndroidManifest,它是怎么做到的?

研究过 com.android.tools.build:gradle ,会留意到它使用到一个子库 com.android.tools.build:manifest-merger ,官方通过这个库来合并多个AndroidManifest文件,或许pins工程也是用了这方式。

接下来,再它的基础上,我做的一些改动,取了另一个名字叫 MicroModule ,先来看一下工程结构:

与pins工程的结构大致不变,增加了 androidTest 和 test ,以及将 project.properties 替换为 build.gradle 。

基本原理是不变的,与微信pins工程一样配置 sourceSets 。AndroidManifest合并用了 com.android.tools.build:manifest-merger 。

在根项目的build.gradle中添加插件依赖:

在模块的build.gradle中引用插件并配置 MicroModule:

MicroModule中的build.gradle:

为了使用上的更加方便,专门写了Android Studio的插件,能快速的创建一个MicroMoudle.

插件安装步骤 :

插件详解 :

插件项目地址 :

MicroModule已经上传至Github,欢迎star交流。


分享标题:android模块,android模块间通信
分享网址:http://scyanting.com/article/dsgpipe.html