The guide of the ModularizationArchitecture

0 条参与

Githup Repository:ModularizationArchitecture
My Homepage:SpinyTech
Welcome to add star and follow.



ModularizationArchitecture is a routing-based multi-process, component-based architecture on the Android platform: it communicates with different modules and processes by sharing routes without referring to other modules. It is suitable for medium-sized App architecture team collaboration, parallel development, business line decoupling, white-box testing and other scenes.

阅读全文

ModularizationArchitecture 使用教程

0 条参与

项目地址:ModularizationArchitecture
个人主页:SpinyTech
欢迎各位读者 Star Follow



ModularizationArchitecture 是Android平台上一种基于路由的多进程、组件化架构:它通过共有路由,在不引用其他模块的前提下,实现不同模块,不同进程之间的通信。它适合中型App架构的团队协作,并行开发,业务线解耦,白盒测试等场景。

阅读全文

高并发对象池思考

0 条参与

这两天在整理一套Android的路由框架,在整理的过程中,发现在路由消息传递过程中,传输载体类会大量的生成,对于这种载体类来说,他们本身是可重复利用的,并不需要大量的创建,大量的废弃,所以,我打算引入对象池,来解决类的重复创建问题。

对象的生命周期

Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除。因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3。其中T1表示对象的创建时间,T2表示对象的使用时间,而T3则表示其清除时间。由此,我们可以看出,只有T2是真正有效的时间,而T1、T3则是对象本身的开销。所以,避免和减少T1和T3的时间,能有效的提升程序的性能。

阅读全文

Android架构思考(模块化、多进程)

0 条参与

关于模块化(组件化)这个问题,我想每个开发者可能都认真的思考过。随着项目的开发,业务不断壮大,业务模块越来越多,各个模块间相互引用,耦合越来越严重,同时有些项目(比如我们公司)还伴随着子应用单独包装推广,影子应用单独发布等等需求,重新调整架构迫在眉睫。今天,我们就来聊聊模块化(组件化),这篇文章同时也是我这几年,对项目架构的理解。

阅读全文

View绘制分析笔记之onDraw

0 条参与

上一篇文章我们了解了View的onLayout,那么今天我们来学习Android View绘制三部曲的最后一步,onDraw,绘制。

ViewRootImpl#performDraw

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void performDraw() {

···
final boolean fullRedrawNeeded = mFullRedrawNeeded;
mFullRedrawNeeded = false;

mIsDrawing = true;
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "draw");
try {
draw(fullRedrawNeeded);
} finally {
mIsDrawing = false;
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}

···

}

阅读全文

View绘制分析笔记之onLayout

0 条参与

上一篇文章我们了解了View的onMeasure,那么今天我们继续来学习Android View绘制三部曲的第二步,onLayout,布局。

ViewRootImpl#performLayout

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private void performLayout(WindowManager.LayoutParams lp, int desiredWindowWidth,
int desiredWindowHeight) {
mLayoutRequested = false;
mScrollMayChange = true;
mInLayout = true;

final View host = mView;
if (DEBUG_ORIENTATION || DEBUG_LAYOUT) {
Log.v(mTag, "Laying out " + host + " to (" +
host.getMeasuredWidth() + ", " + host.getMeasuredHeight() + ")");
}

Trace.traceBegin(Trace.TRACE_TAG_VIEW, "layout");
try {
host.layout(0, 0, host.getMeasuredWidth(), host.getMeasuredHeight());

mInLayout = false;
//此处省略的代码是在layout的过程中,重复的requestLayout,需要做的处理。
//具体的处理方案是重新measure,layout。
...
} finally {
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
mInLayout = false;
}

阅读全文

View绘制分析笔记之onMeasure

0 条参与

今天主要学习记录一下Android View绘制三部曲的第一步,onMeasure,测量。

起源

在Activity中,所有的View都是DecorView的子View,然后DecorView又是被ViewRootImpl所控制,当Activity显示的时候,ViewRootImpl的performTranversals方法开始运行,这个方法很长,不过核心的三个流程就是依次调用performMeasure、performLayout、performDraw三个方法,从而完成DecorView的绘制。

阅读全文

Android 视图及View绘制分析笔记之setContentView

0 条参与

自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外。对于所有Android Developer来说,我们接触最多的控件就是View。通常,我们使用自定义View,需要了解最多的除了事件分发,就是View的绘制过程。然而关于View的绘制,涉及到的知识点纷繁复杂,这么多的代码知识,要梳理起来,肯定是先要找个头。那么平常我们用的最多的方法是哪个方法呢?当然是setContentView()

阅读全文

Android多进程注意事项

0 条参与

上篇文章《Android多进程使用场景》中,我们分析了一下多进程的使用场景,今天这篇文章,我们来聊聊Android多进程开发过程中可能会遇到的问题。

阅读全文

Android多进程使用场景

0 条参与

在上一篇《Android多进程介绍》中,我们大概了解了一下Android中的进程的概念以及其生命周期,另外还有Low Memory Killer相关知识。了解完原理,就该进行实践了。今天这篇文章,我们就来聊一聊,到底如何利用多进程开发,使我们的应用更稳定、用户体验更好?换言之就是Android开发中多进程开发的使用场景分析。

阅读全文