摘录


由于我们要动态的管理组件,所以给每个组件添加几个生命周期状态:加载、卸载和降维。为此我们给每个组件增加一个 ApplicationLike 类,里面定义了 onCreate 和 onStop 两个生命周期函数。

加载:上面讲了,每个组件负责将自己的服务实现注册到 Router 中,其具体的实现代码就写在 onCreate 方法中。那么主项目调用这个 onCreate 方法就称之为组件的加载,因为一旦 onCreate 方法执行完,组件就把自己的服务注册到 Router 里面去了,其他组件就可以直接使用这个服务了。

卸载:卸载与加载基本一致,所不同的就是调用 ApplicationLike 的 onStop 方法,在这个方法中每个组件将自己的服务实现从 Router 中取消注册。不过这种使用场景可能比较少,一般适用于一些只用一次的组件。

降维:降维使用的场景更为少见,比如一个组件出现了问题,我们想把这个组件从本地实现改为一个 wap 页。降维一般需要后台配置才生效,可以在 onCreate 对线上配置进行检查,如果需要降维,则把所有的 UI 跳转到配置的 wap 页上面去。

一个小的细节是,主项目负责加载组件,由于主项目和组件之间是隔离的,那么主项目如何调用组件 ApplicationLike 的生命周期方法呢,目前我们采用的是基于编译期字节码插入的方式,扫描所有的 ApplicationLike 类(其有一个共同的父类),然后通过 javassisit 在主项目的 onCreate 中插入调用 ApplicationLike.onCreate 的代码。

点评

ui跳转以及生命周期,我还需要再仔细研究一下。

原文

点击这里查看原文

其它

本帖内容由21QA云收藏工具自动生成,欢迎使用。

系统消息 若觉得内容不错,请点击左上角的"赞"图标,以优化网站的内容呈现。 另外,请及时验证注册邮箱,否则收不到21QA发出的红包。 官方Q群:250203055

asked 07 May, 18:07

%E8%B7%AF%E4%BA%BA%E7%94%B2's gravatar image

路人甲
131529584623

Be the first one to answer this question!
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link: [text](http://url.com/ "title")
  • image: ![alt](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×752
×33

question asked: 07 May, 18:07

question was seen: 38 times

last updated: 07 May, 18:07

powered by O*S*Q*A

粤ICP备14040061号-1