- 博客(14)
- 资源 (46)
- 收藏
- 关注
原创 简单工厂模式
场景: 创建对象简单工厂: 提供创建对象的功能,不需要关心具体的实现好处: 降低客户端与模块之间的耦合度(最少知识原则)用例:需求:导出数据文件:数据库文件、文本文件工厂方法:把对象的实现延迟到子类完成ExportFileApi.javapackage simpleFactory;public interface ExportFileApi { public void export();}ExportDBFile.javapackage simpleFactory;pub
2021-03-29 21:17:18 365
原创 Gradle相关配置(一):Gradle配置分析
1、语言和作用Gradle是一种自动化构建语音,是一种DSL,目前是Android的默认构建工具,是一个编译框架。APK构建流程:2、Gradle特性3、Gradle的重要概念①Wrapper:指的是gradle-wapper.properties文件中的一些配置项,通过gradle-wrapper.jar包执行这些属性,比如distributionUrl指本地是否存在gradle插件,如果不存在就去网上进行下载。②Closure:闭包,可以理解为打包过程中一系列的执行命令。③Proj
2021-03-16 17:13:02 476
原创 Gradle相关配置(六):如何提高编译效率
1、gradle下载慢?可能原因: gradle版本都在用户目录下(C:\Users\XX\.gradle\wrapper\dists\),如果某个第三方的插件或某个第三方aar包或自己的某个模块,在这没有它就会去下载,不同版本都会进行下载一个,这就将导致编译速度非常慢。解决方法: 不要去下载带"-all"的所有gradle,如果下载了它会将当前版本所有文件都去遍历一遍,只需下载"-bin"文件的gradle即可。可以在gradle-wrapper.properties文件中进行配置distribut
2021-03-16 16:56:17 196
原创 Gradle相关配置(五):代码混淆与反混淆
如果在编译过程中不需要混淆,则将app目录下的build.gradle文件中的minifyEnabled 设置为false.设置为true,则编译过程中就会进行混淆。在app目录下的proguard-rules.pro文件中配置相关的混淆策略,比如在编译过程中配置不需要混淆的一些策略。# 针对于native方法不混淆-keepclasseswithmembernames class * { native <methods>;}# v4包不要混淆-keep class an
2021-03-16 16:08:26 1360 2
原创 Gradle相关配置(四):编写脚本去控制Gradle打包过程中是否需要加入某个library包
场景:比如给A公司的产品需要加入某个library的包(或module),给B公司的产品不需要加入某个library的包。实现流程:新建一个module,选择"Android library"类型。打开项目目录下的settings.gradle文件,并进行配置def buildType = 1; //1表示只打某一个包,2表示都打进去if(buildType == 1) { include ':app'} else if(buildType==2){ include .
2021-03-16 15:33:10 157
原创 Gradle相关配置(三):针对生产环境(prd)和调试环境(debug)有不同的服务器,如何进行配置?
针对生产环境(prd)和调试环境(debug)有不同的服务器,如何进行配置?配置流程如下:在与app目录下build.gradle同一级目录下新建一个config.gradle文件,该文件内容为:ext{ server="prd" //环境 dataSource="0" //假如0代表360,1代表应用宝}可以对上面的配置信息进行更改,比如将server="debug"设置为debug环境。在app目录下的build.gradle文件中添加如下代码apply fro
2021-03-16 14:59:54 519
原创 Gradle相关配置(二):生成签名包的流程
本流程是基于创建一个新的项目的基础上进行完成,保证编译没有问题(初始创建一个项目就可以)。流程如下:1. 点击“Build”–>”Generate Signed Budle or APK”选项,点击选项框中的”APK”选项,点击“Next”;2. 在“Key store path”中的选中“Create new…”,进入“New Key Store”选项框中,进行相关的配置。 上图中红色框框内的部分都是需要填写的内容,其中password在后期打包过程中需要用到。 点击.
2021-03-16 13:39:55 397
原创 Android进程保活拉活
参考:腾讯视频相关视频公开课目录一、进程的一些基本常识二、如何保活三、如何拉活四、总结一、进程的一些基本常识Low Memory Killer系统出于体验和性能上的考虑,app在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来。打开的应用越多,后台缓存的进程也越多。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制来判断要kill掉哪些进程,以腾出内存来供给需要的app, 这套杀进程回收内存的机制就叫 Low Memory Killer。进程优先级官网说
2021-03-11 16:04:59 1450
原创 自定义View(三):触摸反馈
参考:学习视频自定义触发反馈重写onTouchEvent(),写入触摸反馈算法,并返回true;如果是ViewGroup并且可能与子View产生触摸判别冲突,还需要重写onInterceptTouchEvent(),在合适的时候返回false来拦截事件流;如果需要临时阻止父View的拦截,可以用requestDisallowInterceptTouchEvent(),这是一个非持久的方法,仅对当前事件流有效。...
2021-03-11 15:18:24 116
原创 自定义View(二):布局
学习视频一、自定义View:布局基础布局过程的自定义方式:重写布局过程的相关方法测量过程:onMeasure()布局过程:onLayout()具体重新onMeasure()来修改已有的View的尺寸重写onMeasure()来全新计算自定义View的尺寸重写onMeasure()和onLayout()来全新计算自定义ViewGroup的内部布局二、全新定义View尺寸的方式重写onMeasure()把尺寸计算出来把计算的结果用resolveSize()过滤一遍后
2021-03-11 15:14:31 176
原创 自定义View(一):绘制
学习视频一、自定义绘制方式:重写绘制方法(最常用:onDraw())绘制的关键:Canvas(是一个绘制工具,主要是绘制和对绘制的辅助这两类方法)Canvas的绘制类方法:drawXXX()(关键参数:Paint)Paint:它是用来保存颜色和各种风格信息(大小,粗细、实心、空心等)Canvas的辅助类方法:范围裁切(clipXXX())和几何变换(Matrix)使用不同的绘制方法来控制遮盖关系二、Canvas对绘制的辅助范围裁切clipRect()和clipPath()
2021-03-10 16:58:47 75
原创 深入理解虚拟机栈
学习视频一、JAVA虚拟机栈1)虚拟机栈是当前执行线程独占空间,以栈的数据结构形式存在。2)虚拟机栈是线程执行的区域,它保存着一个线程中方法的调用状态。3)每一个被线程执行的方法,为该栈中的栈帧,即每个方法对应一个栈帧。 如果是递归调用,比如上面例子中a()方法中调用a()方法,无限制递归栈帧会无限制的存放Frame-a,直到内存满,出现StackOverflowError错误。如下实例:方法的返回地址:一个方法被调用时一定会有一个出口,这个出口就是一个返回地址,一个方法被调用的过程
2021-03-10 13:52:43 2452 1
原创 Handler面试那些事
问题1:一个线程中有几个Handler?答:多个,一个Activity或service就是在主线程中,在主线程中可以new多个Handler。问题2:一个线程有几个Looper?如何保证?答:一个线程只有一个Looper,通过ThreadLocal进行维持。ThreadLocal: <key, value>,ThreadLocal是一个键值对的形式,但是key和value存放在一个数组中,如下格式。key1value1key2value2…Key–>threadLoca
2021-03-09 14:41:55 880
原创 synchronized和volatile的区别,以及synchronized修饰
参考文献:Java并发——线程同步Volatile与Synchronized详解)..Java中synchronized和volatile的区别volatile和synchronized的区别1.Java内存模型(JMM) 提到这两个有关于线程的关键字,那么我们不得不提到Java的内存模型了(JMM),下面我们先看一下Java内存模型在处理多线程方面的工作原理图。 Java内存模型(java Memory Model) 描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中
2021-03-09 10:58:50 711 1
Android相关学习资料,包含源码和FrameWork内核j解析
2022-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人