- 博客(231)
- 资源 (17)
- 问答 (1)
- 收藏
- 关注
原创 Android 性能优化(一):闪退、卡顿、耗电、APK
性能优化自2008年智能时代开始,Android操作系统开启一路高歌智能机发展之路。时至今日Android系统性能已经非常流畅了。到了不同层次的开发者手里,技术水平参差不齐,使得应用安装到配置极好的手机上依然存在体验差的现象。App性能优化是提升用户体验的永恒主题,也成为工程者最终的使命。性能优化从用户体验角度有四个性能优化方向。
2017-07-11 17:02:27 44636 10
原创 JAVA\Android 多线程的并发与同步
说到线程,就不得不先说线程和进程的关系。进程是系统的执行单位,一般一个应用程序即是一个进程,程序启动时系统默认有一个主线程,即是UI线程,我们知道不能做耗时任务,否则ANR程序无响应。这时需要借助子线程实现,即多线程。由于线程是系统CPU的最小单位,用多线程其实就是为了更好的利用cpu的资源。一、多线程创建方式//线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源xx.start();//启动线程,run函数运行@Override@Override。
2017-03-23 13:24:42 26961 2
原创 Android 性能优化(六):启动优化的详细流程
业内常见的app启动过程阶段一般分为「启动阶段」和「首刷阶段」。启动阶段:指用户点击icon到见到app的首页,起点为的Activity的()。首刷阶段:指用户见到app的首页到首页列表内容展现起点为Activity的onCreate,终点列表的onAttachedToWindow()。为了确保启动优化量化指标的数据能稳定和完整。启动过程中App退后台用户未登录场景特殊场景下的开屏广告,比如有复杂的联动动效站外push、deeplink拉起。
2024-03-27 14:31:29 507
原创 Android Kotlin(六)协程的并发问题
我们知道,在 Java 中最简单的同步方式是 synchronized、Atomic、Lock等同步手段。因为是Java 的锁是阻塞式的,会影响协程的非阻塞式特性,所以在 Kotlin 协程中,不推荐使用 Java 中的同步锁。Mutex 是一个接口,lock() 方法是一个挂起函数,支持挂起和恢复,这是一个非阻塞式同步锁。虽然 Kotlin 协程是基于 Java 线程的,但是它已经脱离了 Java 原本的范畴。此时,这10个协程运行在不同的线程中,可能会出现并发问题,最终结果小于、等于10000。
2024-03-22 19:42:32 995
原创 Flutter Widget:State 状态管理
无论是在 React/Vue/Flutter 中讨论的问题和解决的思想都是一致的。的状态应该被谁管理?Widget本身?父 Widget?都会?还是另一个对象?如复选框的选中状态、滑块的位置如颜色、动画接下来,我们将通过例子说明管理状态的不同方式:创建一个盒子,当点击它时,盒子背景会在绿色与灰色之间切换。状态_active确定颜色:绿色为true,灰色为false。
2024-03-20 15:35:08 992
原创 Flutter 初始Widget&State 简单应用案例分析
本系列文章主要整理Flutter的知识汇总,由浅入深,从Widget的搭建到其中的原理。本文还是围绕Widget在开发中应用和理解。关于Flutter环境配置和首次创建可以参考前面文章。
2024-03-19 21:30:18 719
原创 Flutter Widget:StatefulWidget&StatelessWidget&State
Widget 将是构建Flutter应用的基石,在Flutter开发中几乎所有的对象都是一个 Widget。在Flutter中的widget 不仅表示UI元素,也表示一些功能性的组件,如:手势 、主题Theme等。而原生开发中的控件通常只是指UI元素。Flutter 中是通过 Widget 嵌套 Widget 的方式来构建UI和进行事件处理的。所以记住,。类继承自即“诊断树”;:一个 widget 可以对应一个或多个Element;与oldWidget的和key同时相等时就会用new widget去更新。
2024-03-19 19:12:32 1011
原创 Flutter 核心原理 - UI 框架(UI Framework)
Flutter 它提供了一套Dart API,然后在底层通过OpenGL这种跨平台的绘制库(内部会调用操作系统API)实现了一套代码跨多端。由于Dart API也是调用操作系统API,所以它的性能接近原生。
2024-03-14 22:33:54 1438
原创 操作系统(Android&IOS)图像绘图的基本原理
各个平台几乎所有用于开发GUI(图形用户接口)框架的,编程语言都会在操作系统提供的API之上再封装一层,将操作系统原生API封装在一个编程框架和模型中,然后定义一种简单的开发规则来开发GUI应用程序。像素的颜色是有RGB三基色组成,比如1600万即2的24次方,即每个基本色(R、G、B)深度扩展至8 bit(位),颜色深度越深,所能显示的色彩更加丰富靓丽。但是对于应用开发者来说,直接调用这些操作系统提供的API是比较复杂和低效的,因为操作系统提供的API往往比较基础,直接调用需要了解API的很多细节。
2024-03-14 19:11:43 559
原创 Android Kotlin(五)数据流StateFlow和LiveData
在协程中,与仅返回单个值的挂起函数相反,数据流可按顺序发出多个值。数据流以协程为基础构建,可提供多个值。数据流是可通过异步方式进行计算处理的一组数据序列。所发出值的类型必须相同。
2024-03-12 20:36:47 1118 2
原创 Android Kotlin知识汇总(四)Kotlin 协程实践
Kotlin 协程是一种并发设计模式,可以在 Android 平台上让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理,例如网络调用、本地数据访问等任务的管理。简单来说,协程就是一种轻量级的非阻塞的线程工具API,可以用同步的方式写出异步的代码,优雅地切换线程和处理回调地狱。线程在进程中,协程在线程中。所有源文件都必须编码为 UTF-8。
2024-03-12 18:35:17 972
原创 Android Kotlin知识汇总(三)Kotlin 协程
Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理,例如网络调用、本地数据访问等任务的管理。本主题介绍如何使用 Kotlin 协程解决以下问题,从而让您能够编写出更清晰、更简洁的应用代码。
2024-03-12 16:01:27 1037
原创 Android Kotlin知识汇总(二)代码最佳实践
本主题重点介绍 Kotlin 语言在 Android 开发过程中最有用的一些方面。同时是我们普遍遵循的清晰硬性规则,而避免给出真人或工具无法简明地遵循的建议。所有源文件都必须编码为 UTF-8。
2024-03-11 19:38:58 929 1
原创 Android Kotlin(一)简洁的编程语言-关键字
在 2019 年 Google I/O 大会上宣布今后将优先采用 Kotlin 进行 Android 开发。Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。如果您想构建 Android 应用,建议您从 Kotlin 开始着手,充分利用一流的 Kotlin 功能。
2024-03-11 18:17:01 1197
原创 HarmonyOS(二)Ability应用模型概述
通过了解Ability的概念及Stage模型后,后面章节会再详细解决UIAbility的开发使用。另外,预留一个问题,大家思考:UIAbility与方舟框架ArkUI之间的关系。
2024-03-07 19:03:52 1146
原创 HarmonyOS (一)ArkTS起源及UI框架
总体而言,ArkUI开发框架通过扩展成熟语言、结合语法糖或者语言原生的元编程能力、以及UI组件、状态管理等方面设计了统一的UI开发范式,结合原生语言能力共同完成应用开发。这些构成了当前ArkTS基于TS的主要扩展。
2024-03-07 17:35:14 946
原创 Java CAS原子操作过程及ABA问题
CAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。CAS是一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS是乐观锁的一种实现方式,Java原子类中的递增操作就通过CAS自旋实现的。CAS是一种无锁算法,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。
2024-01-18 19:39:19 387
原创 浅谈敏捷开发的思维
不是一种方法论也不是开发软件的具体方法更不是一个框架或者过程“敏捷”是一套价值观(理念)和原则,帮助团队在软件开发过程中更好地做出决策。简而言之,就是遵循了“敏捷”这一开发原则的开发方法。“敏捷并不意味着一味强调速度,而是轻量和高效。「百度百科」是这样说的敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。
2024-01-16 17:30:37 936
原创 Kotlin 同步与异步执行:run、runCatching、runBlocking 与 runInterruptible
run和runCatching是 Kotlin 标准库的一部分,可以在所有支持的平台上使用。runBlocking和runInterruptible是 Coroutines 的一部分。
2024-01-16 14:25:20 1275
原创 Android 开发规范(基础版)
style的name命名使用大驼峰命名法,几乎每个项目都需要适当的使用 styles.xml 文件,因为对于一个视图来说,有一个重复的外观是很常见的,将所有的外观细节属性(colors、padding、font)放在 styles.xml 文件中。项目的代码时间时间很长,经过太多人手,代码的规范性堪忧,目前存在较多的比较自由的「代码规范」,这非常不利于项目的维护,代码可读性也不够高。分析现有项目的代码的情况,输出的『定制化规范』文档,用于提高代码的可读性和可维护性。
2023-07-15 22:01:31 927
原创 Android 图片加载库改造
1、异步任务处理返回后,activity已经销毁,此时进行加载图片,会报异常You cannot start a load for a destroyed activity ,App会崩溃1). 一个是网络请求,但由于rxjava异常拦截的原因,不会崩溃@Overrideif (data!2) 另一个是其他异步任务回调中处理图片就会崩溃了,类似下边的代码@Overridetry {});}.start();finish();
2023-07-15 21:03:42 662
原创 Android App首页全局黑白化方案探索
关于黑白化页面,这几年是比较常见的场景。比如,在清明节或特殊时政,各大APP都会进行黑白化处理。普通小白刚接到需求的时一定会感觉是不是好麻烦,要搞一套换肤吗?下面有三种实现方案,一起来探索吧!最后咱们再总结一下黑白化方案:使用了 ColorMatrix 设置饱和度为 0,设置到 Paint 中,让根布局拿着这个 Paint 去进行重绘。
2023-06-12 11:41:07 607
原创 Android 手机号344格式化,字符串拼接和EditText输入框
国内手机号一般11位数字,在登录注册等页面经常会用到,其他信息介绍页面也可能会用到手机号的显示。
2023-05-10 10:20:18 286 1
原创 通俗易懂讲解,彻底弄懂 https 原理本质(五)https 的过程
摘要:单向加密算法,比如md5对证书整个内容加密的结果就叫摘要,也叫做证书的指纹;签名:小明用私钥🔑对摘要进行加密出来签字串,就叫做签名。验签:用公钥对签名进行解密出来的摘要和原来的对比,就叫做验签。
2023-03-27 19:25:20 477
原创 彻底弄懂 https 原理本质(四)数字证书
信息的传输过程中,如何保证内容不被篡改,即信息的完整性?结合前面学到的加密知识,我们可以用单向加密算法。比如,用 md5 加密算法,小明👦给小花👧发的内容用 md5 作一次加密运算,会生成一个唯一的字符串,我们把这个字符串起个名,叫做“摘要🍎”。小明👦会把单向加密算法 md5, 以及md5运算的结果摘要🍎,一块发给小花👧。小花收到内容后,用md5对内容进行加密算法,生成新的摘要。小花👧将新的摘要🍎和原先的摘要进行对比,如果相等,说明没有被人篡改过。如果不相等,说明内容被别人修改过了。
2023-03-27 18:44:34 393
原创 彻底弄懂 https 原理本质(二)加密过程
小明选择使用效率高的‘对称加密’密钥 S🔑方式给小花传递情书,再通过通过效率慢的‘非对称加密’🔐方式将密钥 S🔑二次加密。而且此时‘非对称加密’工作量很小,密钥 S🔑安全的传输给对方之后,后面的通信就直接使用对称加密了,这样效率就高了。
2023-03-27 16:08:49 305 1
原创 通俗易懂讲解,彻底弄懂 https 原理本质(一)加密知识
如果对https的过程一知半解,在每次面试时,面试官很可能就问你这个问题。相信很多人对 https 弄不清楚,只是知道 https是网络传输安全加密用的,背后的原理和过程并不是很清楚。其实https 的原理过程,并没有那么复杂,只是有些文章没有说清楚,这样的文章看多了,就迷糊了。MD5 : 相信这个大家都都熟悉了,一个明文,md5以后,对应一个唯一的密文。加密按照加密方式,可以分为以下三种方式。单向加密、对称加密、非对称加密。进行加密和解密(公钥加密私钥解密,私钥加密公钥可以解密);
2023-03-20 10:22:40 528 3
原创 Android 动态代码设置view宽高参数,运行后UI大小没有改变问题
日常开发中遇到一个需求,就是根据业务逻辑,动态改变一个view控件的大小。这种需求也是比较常见的,但是小白比较容易遇到一个小问题,就是代码重新设置了view的宽高大小,运行后发现view没有发生改变。
2023-02-24 19:51:05 1292
原创 管理者的角色误区和角色定位检验
“吾日三省吾身”,如果你立志成为一名优秀的管理者,保持经常“照镜子”,可以在自我反思和他人反馈中一点点改变自己,变成真正做到那个以身作则、带人成事的人。
2023-01-11 23:03:37 292
原创 管理的本质:管理者和执行者的区别
在职场中因为岗位职责的差异,我们通过被分为两种角色,即执行者和管理者;大部分管理者也是从执行者晋升来的。因为思维的惯性,导致我们会很容易带着执行者的意识去做管理,遇到问题就会想着自己动手去做,按照过去总结过的经验去解决问题。如果你发现自己感觉不到团队的支持,在推动业务的过程中举步为难,你有可能已经落入执行者的惯性思维中了。
2023-01-09 19:25:28 452
原创 Android 增加布局圆角功能,支持背景裁切圆角
我们Android开发同学最常见、频繁画UI时会遇到有角度的布局。例如:通常,我们都会在drawble文件夹下创建Shape.xml去实现对吧?当然这样的代码实现方式没毛病。但是,项目大了业务繁杂,工程中会出现很多此类文件,显得非常臃肿,而且不方便复用,不利于研发效率提升。那么,我们就会思考,是否可以有一种能更快捷且优雅的方式实现这个圆角布局。
2022-11-16 22:33:27 1173
原创 关于产品MVP的定义与实践
MVP(Minimum Viable Product)—— 关注商业前景MDP(Minimum Desirable Product)—— 关注用户体验
2022-11-14 14:13:25 3488
原创 团队管理九宫格:绩效考核、人才选拔:
在人才盘点时,根据人才的绩效和能力(包括胜任力),分别作为纵坐标和横坐标,将人才盘点的结果划分为9个象限,人才分为九个类别,以便于分类管理,因材施教。根据人才九宫格,我们将人才划分为9大类别,如下图。(请留意,上图中明星员工的衡量标准✅)
2022-11-11 14:19:15 580
原创 《复盘+》把经验转化为能力
复盘”原是围棋中的一个术语,原意是"下完一盘棋之后,重新把对弈的过程摆一遍",指的是"做完了事情,再从头过一遍,以不断检验和校正目标;分析得失,找原因,找后账;提高认识,总结规律"。运用到企业管理中,复盘指的是从过去的经验、实际工作中进行学习,帮助管理者有效地总结经验、提升能力、实现绩效的改善。通俗的讲,就是一件事件做完以后,做成功的,总结经验,提炼出方法论;失败的,思考预先怎么计划的、中间出了什么问题、失败的主要原因及矛盾、哪里做得好、哪里没做好整理出来,下次再做的时候,吸收这次的经验教训。
2022-10-26 18:59:14 2928
原创 Android Kotlin之let、with、run、apply、also函数的使用
相比Java语言Kotlin更加简洁安全高效。不仅支持lambda表达式,还支持非空验证机制,另外提供一套源码标准库(Standard.kt)。但是,对于Kotlin的初学者来说,可能会经常写编写出不够优雅的代码,而Kotlin提供了一些内置函数便可以帮助优化代码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。let函数实际上是一个作用域函数,当需要去定义一个变量在一个特定的作用域范围内时,就可以使用let函数。
2022-09-27 14:31:14 3073
原创 Android 项目主题样式库:统一颜色、字号,避免重复开发
组件化多业务模块情况下,各模块中存在一些字号、颜色等样式定义、引用相对混乱的现象。大部分业务开发同学会随意使用颜色和字体等,没有明确的统一格式进行调用。因此,导致项目中相关重复定义颜色字号增多失控,不易维护,增加包体积,开发同学的在使用上不够简单高效,经常编写重复代码。
2022-09-21 19:23:01 1408
Android 二维码扫一扫demo
2020-01-06
ExpandableListViewDemo.zip
2019-11-27
TestApplication.zip
2019-05-08
download-manage
2019-01-09
Bluetoothdemo
2017-09-11
音频震动管理
2017-09-08
ToolBar封装抽象类统一项目风格
2017-06-01
Android 热修复tinker补丁加载出错,提示日志如下:
2018-03-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人