《Kotlin核心编程》读书笔记-基础语法 内容摘自《Kotlin核心编程》第2章,在其基础上对一些概念进行拓展了解 本章主要讲Kotlin一些基础语法. 类型声明声明变量尽可能采用val、不可变对象及纯函数来设计程序。 123val a = "Hello World"或val a:String = "Hello World" val:引用不可变。反编译后的Java代码中是通过final对变量 2019-06-19 #Kotlin
static关键字分析 一种表示静态属性的修饰符。用于为特定区域分配单一存储空间,不考虑要创建多少对象或者说根本就不创建任何对象,再就是想在没有创建对象的情况下也去调用方法。 static关键字作用 用来修饰类的成员 修饰成员变量——静态变量 修饰成员方法——静态方法 当类被加载时,会优先被加载 用来修饰代码块——静态代码块,先于类的构造方法之前执行且只会执行一次。用来对静态成员做初始化 静态修饰的成员被 2019-02-25 #Java
include、merge及ViewStub相关 主要解析include、merge及ViewStub include 主要为了解决重复定义相同布局的问题。把一套布局封装起来,需要使用时使用标签引入。提高代码复用性 使用注意事项: 如若我们在中设置了android:id属性,这个id会覆盖原先`中layout设置的布局id,所以在引用该id时需要注意 如果需要在中需要使用andrdoid:**属性,必须要设置layout_width以 2019-01-03 #Android #布局优化
Android屏幕的刷新机制 基础概念在显示系统中,一般包含三个部分CPU、GPU,屏幕。 CPU:执行View的绘制流程measure,layout.draw GPU:进一步处理数据,对图形数据进行渲染并放到buffer缓冲区中缓存 屏幕:将buffer缓冲区的数据取出来填充屏幕像素点 CPU绘制后提交数据,GPU进一步处理和缓存数据、最后屏幕从缓冲区获取数据并显示。 如果放到 Android 实际渲染链路里,还可以进一步 2020-05-30 #Android
WindowManagerService简析 WindowManagerService的职责 Window相关操作最终都在系统进程侧由WindowManagerService落地执行。应用进程通过WindowManager发起请求,再经IWindowSession与WMS通信。 一条主链路WindowManagerImpl.addView/updateViewLayout/removeView -> WindowManagerGlob 2019-01-30 #Android
《Kotlin核心编程》读书笔记-面向对象 内容摘自《Kotlin核心编程》第3章,在其基础上对一些概念进行拓展了解 本章主要讲Kotlin中一些面向对象的类和方法讲解以及一些相对Java的优化点。 类和构造方法定义类与Java相同使用class结构体来声明一个类 12345678class Bird{ //颜色 val color :String ="blue" //年纪 var age : In 2019-06-23 #Kotlin
基础排序算法介绍 基础排序算法介绍知识点: 排序算法稳定性的定义:简单的介绍就是排序前相等的数据先后顺序在排序后的先后顺序位置相同 基本交换算法 12345private static void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; 2018-03-20 #算法
设计模式--静态代理模式和动态代理模式原理及实现 代理模式(委托模式) 为其他对象提供一种代理以控制对这个对象的访问。引入代理对象来间接访问目标对象 代理模式优点: 职责清晰:真实的角色就是实现实际的业务逻辑,不需关心其他非本职责的事务 高扩展性:代理类可以在不做任何修改的情况下继续使用 智能化:动态代理演示 代理模式缺点: 在客户端和真实对象之间添加了代理,会造成请求的处理速度变慢 实现代理模式比较复杂,需要额外的工作 代理模式的 2018-04-09 #设计模式
设计模式--基本原则 单一职责原则(SRP) 单一职责原则英文名称为Single Responsibility Principle,简称SRP。 优点: 类的复杂性降低,实现什么职责都有清晰明确的定义 可读性提高,复杂性降低 可维护性高 对于开发过程来说,接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。 里氏替换原则(LSP) 所有引用父类的地方都必须能透明的使用其子类的对象。简单的说就是 父类 2018-12-14 #设计模式
设计模式--责任链模式 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链路传递,直到有对象处理请求为止。 责任链模式-定义Handler:抽象处理者 该角色对请求进行抽象,并定义一个方法来设定和返回对下一个处理者的引用。 12345678910111213public abstract class Handler{ private Handl 2019-01-11 #设计模式
进程保活介绍 进程保活 进程保活的方式分为两个层面:提高进程优先级,降低被杀死概率,在进程被杀死后进行拉起。 补充:先区分目标“保活率”与“任务完成率”。 “进程一直活着”不是唯一目标,业务上更关键的是“任务最终完成”。 对即时任务可用前台Service;对延迟任务优先WorkManager/JobScheduler。 1. 进程的优先级 优先级最低的进程首先被杀死、进程的等级会因为其他进程的依赖而提高一 2018-04-12 #Android
热修复基本原理 目前流行的热修复方案主要有以下三种: 代码修复 资源修复 动态链接库修复 本章主要讲述 第一种方案:代码修复。 代码修复 原理:对出现Bug的类进行修改或替换 类加载方案 核心思想:使用Android的类加载器,通过类加载器去加载已修复好Bug的Class并对有问题的Class进行覆盖。 加载完成后需要重启应用才可生效,因为当前在使用的类是无法卸载的即不可替换,只有重启后重新加载才可 2018-04-07 #Android
View的事件体系 在Android中任何一个与用户交互或者展示内容的控件都是由View拓展实现的。 View的基础知识View是Android中所有控件的基类,也包括ViewGroup。ViewGroup可以理解为View的组合,内部可以包含很多View以及ViewGroup,通过这种关系就形成了一个View树。 上层的控件主要负责测量与绘制下层的控件,并传递交互事件。 1. View的位置参数1. 2018-12-25 #Android