自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android SVG之pathData

记录pathData的一些用法,及自己的使用技巧

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android开发规范

1 前言2 AS 规范3 命名规范4 代码样式规范5 资源文件规范6 版本统一规范7 第三方库规范8 注释规范9 测试规范10 其他的一些规范Android 开发规范(完结版)。后续可能会根据该规范出一个 CheckStyle 插件来检查是否规范,当然也支持在 CI 上进行检查。

2024-02-27 18:07:15 852

原创 Android 框架设计模板

(下面以模块化框架为例,介绍各模块用途, 包含module 工程结构图,核心类加以说明)app壳 工程,是依赖所有组件的壳,该模块不应该包含任何代码,它只作为一个空壳存在,由于项目中使用了EventBusAPT技术,需要索引到各业务组件的对应的APT生成类,所以在 app壳 内有这一部分的代码。这是一个特殊的文件夹,负责项目的构建,里面存放着一些项目构建时用到的东西,比如项目配置,依赖。这里面还是存放 Gradle 插件的地方,一些自定义的 Gradle 的插件都需要放在此处。

2024-02-27 18:03:23 1071

原创 App内存优化

方便直观线下平时使用定义:内存频繁分配和回收导致内存不稳定表现:频繁GC、内存曲线呈锯齿状危害:导致卡顿、OOM定义:内存中存在已经没有用的对象表现:内存抖动、可用内存逐渐减少危害;内存不足、GC频繁、OOM使用Memory Profiler 初步观察(可用内存逐渐减少时,可以断定有内存泄露)通过Memory Analyzer 结合代码确认挂钩,将额外的代码钩住原有方法,修改执行逻辑运行时插桩性能分析。

2023-12-05 21:03:51 1120

原创 Java Type

Type 是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java 中所有类型的”爹“。其中”所有类型“的描述尤为指的关注。它并不是我们平常工作中经常使用的int、String、List、Map等数据类型,而是从Java语言角度磊说,对基本类型、引用类型向上的抽象。

2023-01-09 15:43:43 849

原创 kotlin必备基础一(方法&Lambda表达式)

在使用lambda 表达时的时候,可以用下划线(_)表示未使用的参数,表示不处理这个参数。当方法返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可。kotlin 方法可以申明在一些局部的作用域里(在方法中再定义方法)在kotlin 中,函数是一等公民,可以直接申明。通过object 修饰类,可以定义一个静态类。方法参数可以有默认值,当省略相应的参数时使用默认值。闭包可以理解为能够读取其他方法内部变量的方法。闭包是将方法内部和方法外部连接起来的桥梁。顾名思义没有方法名的方法就叫匿名方法。

2023-01-09 15:42:42 430

原创 Jvm知识点二(GC)

Jvm 内存分配与回收

2023-01-05 13:47:21 270

原创 Jvm知识点一(jvm 组成部分)

Jvm 组成部分

2023-01-04 14:37:29 264

原创 kotlin高级特性二(语法特性背后的知识)

kotlin 高级特性

2022-07-07 15:42:44 131

原创 kotlin高级特性一

kotlin 高级特性

2022-06-27 22:38:33 1208

原创 kotlin类与对象

kotlin中的类与对象

2022-06-23 23:05:29 744

原创 kotlin函数与闭包 & Lambda语法

kotlin 函数 闭包 lambda

2022-06-21 23:19:37 830

原创 Kotlin最基础语法(一)

kotlin 快速入手

2022-06-20 21:20:44 180

原创 Flutter 系列之空安全

一.走进空安全什么是空安全从Flutter 2开始,Flutter便在配置中默认启用了空安全,通过将空检查合并到类型系统中,可以在开发过程中捕获这些错误,从而防止再生产环境导致的崩溃。引入空安全的好处可以将原本运行时的控制引用错误变为编辑时的分析错误增强程序的健壮性,有效避免由Null 而导致的崩溃跟随Dart 和Flutter 的发展趋势,为程序的后续迭代不留坑空安全的最小必备知识空安全百度原则引入空安全前后Dart 类型系统的变化可空(?)类型的使用延迟初始化(late)

2021-08-15 14:42:25 1925 1

原创 Flutte 包和插件的开发流程步奏

Flutter 插件开发流程Flutte 包和插件的开发流程步奏package 介绍Package 类型创建包或插件Flutte 包和插件开发与发布发布如何甄选Flutter 包和插件新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入

2021-08-06 13:18:31 116

原创 Android 混淆机制详解

前言混淆是增加逆向工程和破解的难度,防止App知识产权被窃取的一个有力手段,高级的代码混淆甚至可以有效地保护存储在客户端的密钥,同时混淆也有很多要注意的地方。从广义上讲,Android 中的混淆包括三种类型java 代码的混淆Native (C & C++) 代码的混淆资源文件的混淆java 代码的混淆java 代码的混淆在Android 中是最为常见的一种混淆...

2018-08-20 13:30:14 765

原创 Android 数据加密之Rsa加密

什么是Rsa加密RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。RSA算法原理如下:1.随机选择两个大质数p和q,p不等于q,计算N=pq; 2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素。 3.用公式计算出d:d×e = 1 (mod (p-1)(q-1)) 。 4.销毁p和q。RSA...

2018-08-17 13:31:21 493 3

原创 Android数据加密之Aes加密

项目中除了登陆,支付等接口采用rsa非对称加密,之外的采用aes对称加密,今天我们来认识一下aes加密。什么是aes加密高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。生成一个密钥/* * ...

2018-08-17 10:50:46 398

原创 Android数据加密之DES加密

DES 加密介绍:DES 是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广为流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解DES 加密使用方式:1.DesUtil 常量类介绍private final static String HEX = "0...

2018-08-16 11:18:41 186

原创 Android数据加密之Base64编码算法

前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算法什么Base64算法Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。...

2018-08-15 11:03:11 347

原创 Android 数据加密之异或加密算法

什么是异或加密异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。异或运算使用场景两个变量的互换(不借助第三个变量)数据的简单加密解密异或加密解密实现1.固定key的方式这种方式加密解密 算法一样public byte[] encrypt(byt...

2018-08-15 10:33:54 378

原创 Android 数据加密之MD5

什么是MD5加密?MD5英文全称“Message-Digest Algorithm 5”,翻译过来是“消息摘要算法5”,由MD2、MD3、MD4演变过来的,是一种单向加密算法,是不可逆的一种的加密方式MD5加密有哪些特点?压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到...

2018-08-15 10:10:55 139

原创 Android 单元测试之Mockito框架的使用

前序首先我们要理解mock的概念,然后学习使用mock来做单元测试。关于Mock的框架有很多,比如Mockito、PowerMock、EasyMock等等,本文主要介绍Mockito的用法,各种框架的对比不在本文阐述范围,而且此类框架大体相同,只需要学习其中一个就能轻松地学习其他框架,没必要纠结那个框架才是最好的Mock的概念首先要明白为什么要用Mock,什么是Mock,Mock能...

2018-08-13 15:37:24 1967

原创 Android 单元测试之JUnit

在记录单元测试有关的笔记前,先谈谈为什么写单元测试 看完这篇文章,相比对单元测试有了一定了解。那么单元测试如何开始呢一.创建测试类在任意需要测试的类(或者方法)下面按下Ctrl+Shift+T(这是默认热键)如下图** 首次创建一个新的测试类,然后会弹出提示界面: 如果你已经创建过,则会提示对应的测试类让你跳转过去,同样测试类也可以利用这个方法跳转到被测试类。 创建...

2018-08-10 15:02:36 280

原创 Android 压力测试

一.背景1.为什么要开展压力测试?提高产品的稳定性提高产品的留存率2.什么时候开展压力测试?首轮功能测试通过后下班后的夜间进行二.理论1.什么是MonkeyMonkey 是发送伪随机用户事件的工具。2.什么是MonkeyScriptMonkeyScript 是一组可以被Monkey识别的命令集合MonkeyScript 可以完成重复固定的操作...

2018-08-09 16:42:29 785

转载 Android 事件分发机制

一.事件分发基础认知事件分发的对象是谁:点击事件(Touch事件)定义:当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事(Touch事件) Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象事件类型 事件类型 具体动作 MotionEvent.ACTION_DOWN 按下View...

2018-08-08 13:53:12 407

原创 Android GrennDao集成及使用

一.GreenDao配置1.在项目下的 build.gradle 中的 dependencies 中填入GreenDao 插件 2.在app下的build.gradle 中应用 greenDAO 插件(放在顶部) 3.在app下的 dependencies中加入依赖// greenDAO 函数库implementation 'org.greenrobot:greend...

2018-08-07 11:43:38 212

原创 Android 本地广播与全局广播

1. 全局广播和本地广播的区别全局广播:发出去的广播可以被任何应用程序接收到本地广播:发出去的广播只能被本应用程序接收到,一般使用LocalBroadcastManager对广播进行管理。2.注册广播注册广播的方式一般有两种:在代码注册(动态注册)在AndroidManifest.xml中注册(静态注册)动态注册广播监听新建一个类,让它继承自Broadca...

2018-08-06 16:23:47 2705

原创 Android Service 和 IntentService

一.启动服务的方式有俩种startService bindServicestartService定义使用startService()方法启用服务后,调用者与服务之间没有关连。调用者直接退出而没有调用stopService的话,Service会一直在后台运行。启动流程首次启动Service调用 onCreate -> onStartCommand重复调用 ...

2018-08-03 17:07:08 582

原创 Android 内存泄露成因和解决办法

Java内存泄露引起原因内存泄露是指无用对象(不再使用的对象)持续占有内存 或 无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。Java内存泄露根本原因长生命周期的对象持有短生命周期对象的引用,此时就很有可能发生内存泄露。尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这是java中内存泄露的常见场景。导致内存泄露的情形...

2018-08-03 13:25:51 863

原创 Android MVC、MVP、MVVM架构总结

MVCModel实体模型(数据的获取、存储、数据状态变化)View 指的是XML布局文件或者是用Java自定义的ViewController-对应于Activity或者是Fragment,处理数据、业务和UI总结:从上面这个结构来看,Android本身的设计还是符合MVC架构的,但是Android中纯粹作为View的XML视图功能太弱,我们大量处理View的逻辑...

2018-08-02 17:38:16 248

原创 Android 屏幕适配解决方案

屏幕适配问题的本质使得“布局”、“布局组件”、“图片资源”、“用户界面流程”匹配不同的屏幕尺寸使得“图片资源”匹配不同的屏幕密度布局匹配本质1:使得布局元素自适应屏幕尺寸布局的子控件之间使用相对位置的方式排列,因为RelativeLayout讲究的是相对位置,即使屏幕的大小改变,视图之前的相对位置都不会变化,与屏幕大小无关,灵活性很强LinearLayout无法准...

2018-08-02 16:38:28 371

原创 Android 屏幕适配相关概念

屏幕尺寸含义:手机对角线的物理尺寸单位:英寸(inch),1英寸=2.54cm Android手机常见的尺寸有5寸、5.5寸、6寸等等屏幕分辨率含义:手机在横向、纵向上的像素点数总和 1.一般描述成屏幕的”宽x高”=AxB 2.含义:屏幕在横向方向(宽度)上有A个像素点,在纵 向方向(高)有B个像素点 3.例子:1080x1920,即宽度...

2018-08-02 11:20:32 195

原创 Android Gradle自动打包

1.步骤一配置Gradle 环境变量找到自己Android Studio目录下的gradle文件,如C:\ProgramFiles\Android\Android Studio\gradle\gradle-4.1\bin 。找到这个目录以后,按照配置JDK那样首先将其编辑到系统变量 GRADLE_HOME: 上面两个步骤执行完毕以后。我们可以测试下Gradle环境是否安装成功。首先打...

2018-08-01 13:36:27 621

原创 Android 反编译工具(apktool ,dex2jar,jd-gui.exe)使用详解

Apktool 用法工具下载地址 密码:9bg81.下载Apktool 工具(包含aapt.exe & apktool.bat & apktool.jar)。如下图 2.将准备进行反编译的apk 放到 apktool.bat 文件所在路劲。 3.在cmd 中切换到apktool.bat 所在路劲,输入指令,如下 ZX 文反编译后的文件名。编译成功后 ...

2018-07-31 13:17:59 4385 1

原创 Android 动画

动画

2018-07-09 10:50:38 164

原创 Android Scroller

Scoller 弹性滑动对象,用于实现View的弹性滑动。在说弹性滑动之前,我们先来看一下View常用的滑动方式。第一种:通过View本身提供的scrollTo / scrollBy 方法来实现滑动。第二种:通过动画给View 施加平移效果来实现滑动。第三种:通过改变View的LayoutParams 使得View 重新布局从而实现滑动...

2018-07-04 17:51:18 213

原创 Android View的事件体系

本节主要介绍View的一些基础知识,主要介绍 View的位置参数、 MotionEvent 和 TouchSlop对象、 VelocityTracker、 GestureDetector、对象。 由于篇幅原因对Scroller的讲解在另一篇(点击进入)1.什么是ViewView是Android中所有控件的基类,View是一种界面层的控件的一种抽象,它代表一个控件,除了View还...

2018-07-04 17:38:39 188

原创 Activity生命周期全面分析

1.典型情况下的生命周期从整个生命周期来说,onCreate和onDestroy 是配对的,分别标志着Activity创建和销毁,并且只可能调用一次。 从Activity 是否可见来说onStrart 和onStop 是配对的,随着用户的操作或设备的屏幕的点亮和熄灭,被调用多次。 从Activity 是否在前台来说 onResume 和onRause 是配对的,随着用户的操作或设备的屏...

2018-07-04 10:32:52 365

原创 Katalon Studio 集成配置

1.安装Katalon Studio到katalon官网下载对应操作系统应用程序。(我的是windows 64位,以下均以windows 64位为安装配置讲解为主) 点击现在下载按钮将跳转登陆页 注册并登陆,开始下载 注意:在安装katalon 时需要进行激活,该登陆账号便是激活账号如果仅用来测试web项目,到此处便可以进行使用了。 如果想测试app项目那就需要...

2018-05-25 17:55:16 3508 5

原创 java 接口

1.接口作用:接口使抽象的概念更深入一层。可将其想象为一个”纯“抽象类。它声明了若干抽象方法和常量,其主要作用是帮助实现类的多重继承功能。接口中的所有方法都是抽象方法,这些抽象方法由实现这一接口的不同类来具体完成。在使用中,接口类的变量可以用来代表人和实现了该接口的类的对象,这就相当于把类根据其实现的功能来分别代表,而不必考虑他所在类的继承层次。这样就可以最大限度的利用动态绑定,隐藏实现细节。...

2018-05-23 14:54:01 149

greendao数据库

一款超级利害的数据库操作库Greendao,GreenDao 简介 GreenDao是一个将对象映射到SQLite数据库中的轻量级且快速的ORM解决方案. 优点: 1. 一个精简的库 2. 性能最大化 3. 内存开销最小化 4. 易于使用的APIs 5. 对Android进行高度优化 GreenDAO 缺点: 1. 配置步骤繁多 2. 学习成本高 3. 封装没有ORMLite完善

2017-12-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除