- 博客(24)
- 收藏
- 关注
原创 Kotlin DSL 实战:像 Compose 一样写代码
1. 前言Kotlin 是一门对 DSL 友好的语言,它的许多语法特性有助于 DSL 的打造,提升特定场景下代码的可读性和安全性。本文将带你了解 Kotlin DSL 的一般实现步骤,以及如何通过 @DslMarker , Context Receivers 等特性提升 DSL 的易用性。2. 什么是 DSL?DSL 全称是 Domain Specific Language,即领域特定语言。顾名思义 DSL 是用来专门解决某一特定问题的语言,比如我们常见的 SQL 或者正则表达式等,DSL 没有通用编
2022-02-28 17:40:28
487
原创 Gradle基础 | 自定义插件并上传到JitPack
引言每一个使用 Gradle 的同学,肯定都听过或者写过插件,因为其本身并不难,但碍于现在网上的文章千篇一律,大部分都比较老,新同学一上手反而是和我一样,花了大把时间在最基础的第一步如何写一个简单demo上。再者如果大家使用 AndroidStudio BumBlebee 去创建项目,那对照网上教程差别更大,甚是花费时间,而本篇就是帮你省掉这些时间。本篇主要概括创建插件的三种方式,并如何上传到 JitPack 中。开发环境基于最新的 Gradle7.0.4 , AndroidStudio BumB
2022-02-11 16:27:57
247
原创 【解惑】App处于前台,Activity就不会被回收了?
昨天在康 KunMinX 大佬的:《重学安卓:Activity 生命周期的 3 个辟谣》,在加餐处看到这段:转换后的理解:单进程场景,Activity被回收只可能是因为进程被系统回收了。感觉不太对?因为在很久以前,遇到过这样一个场景:App打开多个Activity,然后手机晾一边,过一段时间后(屏幕常亮),点击回退,之前的Activity空白,然后重新加载了。App在前台,不在栈顶的Activity却被干掉,但进程还健在,如果真是这样,就和上面的理解有些出入了。立马写个代码验证下,大概流程
2022-02-11 16:24:19
1512
原创 三思系列:为什么自定义View
前言或许你掌握了 measure的细节 ,layout机制 ,事件传递机制 ,canvas各种API ,但是,你们想过这个问题吗?这一篇,不仅仅是对一个面试必会题的解析,更是透过这个问题的思考,寻找 最佳实践 ,拓展思维角度 , 少走弯路三思系列是我最新的学习、总结形式,着重于:问题分析、技术积累、视野拓展,关于三思系列关于View系列 View系列旨在通过 对现实问题 的思考,建立完善的 View体系认知,极力建议读者了解一下 我为什么撰写、分享这个系列先给出思考这个问题的 脑图 ,文章内容
2022-01-26 10:15:55
116
原创 Jetpack Compose 中优雅完成数据持久化
Compose出来也好久了,各种remember和LocalXXX.current也是用得越来越熟。如果能在保持上述写法一致性的情况下完成数据的持久化工作,不是显得挺优雅的吗?简单一瞥:// booleanExample 初始化值为false// 之后会自动读取本地数据var booleanExample by rememberDataSaverState(KEY_BOOLEAN_EXAMPLE, false)// 直接赋值即可完成持久化booleanExample = true可还行?C
2022-01-26 10:05:09
259
原创 字节跳动的真实工作体验
前言从 3 月底入职到现在也有差不多 6 个月了,这 6 个月我也逐渐适应了字节跳动的工作、生活方式,这也代表着从学校到职场的一些转变,我感觉可以把这些内容分享出来,希望能够给到想了解的同学一些帮助。进来之前在准备面试前,我对字节的印象是有几个流弊的产品,如头条、抖音等,然后推荐方面特别厉害,注重算法考核等等,但是相比其他大厂,如腾讯、阿里,可能积淀没有那么浓厚。比如蚂蚁那边的体验技术部在开源方面有着诸多成功的实践,腾讯的 AlloyTeam 也经验丰富,产出惊人,而在我所在的领域里,字节在开源、
2022-01-25 14:24:14
5986
原创 『BATcoder』寒冬已至,,视频聊聊四面楚歌的Android工程师该何去何从?
视频版本今年的行情相对去年整体要差一些,很多同学发现很多公司招人,兴冲冲去面试了,结果面了几家都是等通知,实际上就是招聘的职位有限,面试的人很多。 寒冬真的来了吗?我觉得未必,只是移动开发不热门了而已,竞争更激烈的而已,需求还是有的,移动端程序员和PC时代的程序员还是不同的,目前还没有出现能够替代手机的这种高频使用的物品。 作为曾经炙手可热的Android工程师,现在面临着以下的问题:互联网整体环境不乐观Android开发人员众多但岗位减少,导致要求越来越苛刻大前端趋势、跨平台方案频出、小程序肆虐
2022-01-25 13:49:20
193
原创 RxHttp ,比Retrofit 更优雅的协程体验
1、前言一直有人问我,RxHttp跟Retrofit相比有什么优势?在这,我想通过稳定性、功能性、易用性几个方面来谈谈我的想法。首先我声明一点,RxHttp的出现,并不是要干掉谁,而是给大家多一个选择,多一个不一样的选择。稳定性我一直认为Retrofit,是当下综合得分最高的选手,RxHttp也很优秀,但得分比Retrofit低那么一丢丢,那这一丢丢差在哪里呢?就差在稳定性这一块,毕竟Retrofit是全球知名的项目,github 上 37k+ star,稳定性肯定不用说,反观RxHttp,才2.6
2022-01-25 13:46:43
385
原创 一文快速入门 Kotlin 协程
一、Kotlin 协程Kotlin 协程提供了一种全新处理并发的方式,你可以在 Android 平台上使用它来简化异步执行的代码。协程从 Kotlin 1.3 版本开始引入,但这一概念在编程世界诞生的黎明之际就有了,最早使用协程的编程语言可以追溯到 1967 年的 Simula 语言。在过去几年间,协程这个概念发展势头迅猛,现已经被诸多主流编程语言采用,比如 Javascript、C#、Python、Ruby 以及 Go 等。Kotlin 协程是基于来自其他语言的既定概念Google 官方推荐将 Kot
2022-01-25 13:38:42
1924
原创 安装一个apk引起的无法开机。
故事的开始今天老大急冲冲的跑过来说:xx,你帮我看看这手机咋回事,突然开不了机。我心想:我最近也没提过代码,应该不是我的问题吧。(甩锅.)把电脑插上手机后,我看到下面这段报错一直在loop12-31 16:08:49.603 21899 21899 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main12-31 16:08:49.603 21899 21899 E AndroidRuntime: java.lang.Illega
2022-01-24 14:07:03
174
原创 浅谈2022Android端技术趋势,什么 值得 学?
引言回头去看 2021,过的似乎那么快,不敢相信我已经从事 Android 开发两年了,不免生出一些感叹。那么 2022 ,Android 端会有什么技术趋势吗?或者什么 [新] 技术值得去学? 又或者对我来说,现在什么 [值得] 去学?本文将通过我个人的技术学习经历去分析我们应该怎么选用某个技术,希望对大家能有所帮助。回头看让我们把时间切回过去,最近几年我都给自己加了哪些技术点?2019-2020Kotlin,协程MVP,Hilt,MVVM ,JetPack 相关热修复Flutt
2022-01-24 13:58:36
161
原创 用 Compose 画个小老虎恭贺新春
效果图大家不要误会,效果图不是上面的图。。。上面的图太复杂了,我画的老虎可没有这么好看????。。哈哈哈,是不太好看哈。。不要在意那些细节,这不重要!重要的是迎接 2022 年虎年的那颗炙热且纯真的心,还加了点动画,当点击老虎的头的时候会动。。。在这里先祝大家在虎年虎虎生威,每天都能虎虎大睡!思路本来想画一个好看的老虎,但真的动手的时候就有点不知所措了,本来想的一层一层放图片,就有点 PS 那意思了,那样效果确实比这个好,但是诚意和这个一笔一笔画的就不一样了。后来决定通过 P
2022-01-24 13:50:42
433
原创 字节跳动最爱问的智力题你会几道?
在面试过程中,智力题的考察也经常出现,这种题的特点是如果你看过,那么很容易就能做出来,如果没加过那可能在面试过程中不太容易做出来,所以在面试过程中恰好问到看过的题也不要马上答出来,还是要假装思考一下,因为你脱口而出会让面试官发现你做过,给你换一道题的。1. 只有两个无刻度的水桶,一个可以装6L水,一个可以装5L水,如何在桶里装入3L的水提示:这个问题的本质就是利用两个水桶的已知容量倒来倒去,问题的解法并不唯一。先将5L的桶装满,将5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有5.
2022-01-22 09:16:20
290
1
原创 HashMap 的产生与原理
一、HashMap的诞生1.1 数组数组:一片物理上连续的大小确定的储存空间。好处:根据下标快速的查找和修改里面的内容。缺点:大小确定,无法修改。添加新的元素或者删除元素比较麻烦。数组的静态初始化 //数组实现方式一: //数据类型 数组名称[] = {值, 值,…} String str[] = {"移动端","Android","iOS"}; System.out.println(str.length);//三个元素
2022-01-22 09:12:34
230
原创 Android-自定义桌面小部件【完成小米MIUI小部件】
最近相信大家都坐着小板凳听了MIUI的内容吧。当然了MIUI小部件可以说让MIUI上档次了许多,作为开发者的你是否为之惊叹?当然了我看到了许多的貌似自定义的简单操作,当然了大多数都是可爱简约的背景加动画,伴随点自定义的内容。不管小米是否自己制定的可支持小部件布局还是应用自定义,我想只要我们可以动画可以自定义,别说简单的这些动画了。天马行空,只有想不到,没有做不到。接下来我们来看看如何步入小部件的自定义,搞定这节课,你的小部件超越比肩小米和IOS只是UI的问题了。一、AppWidgetProvider.
2022-01-21 09:48:37
3579
1
原创 拯救OOM,字节自研 Android 虚拟机内存管理优化黑科技 mSponge
本文描述的虚拟机内存管理优化方案,是从应用侧视角对 Android 虚拟机内存管理进行改造,优化了虚拟机对 LargeObjectSpace 的内存管理策略,间接增加其它内存空间使用上限。改造后的方案,32 位运行环境 LargeObjectSpace 的内存使用上限可达到 2G 甚至更多(64 位环境使用上限理论上会趋于无限大)。通过本方案可以最大程度上从系统侧解决诸多应用都会遇到的内存瓶颈和 OOM 问题,一键接入,安全可靠。1.背景Java OOM对于 Android 开发者来说并不陌生,随着.
2022-01-21 09:39:52
272
原创 全民 Kotlin:你没有玩过的全新玩法
空安全在 Java 不用强制我们处理空对象,所以常常会导致 NullPointerException 空指针出现,现在 Kotlin 对空对象进行了限定,必须在编译时处理对象是否为空的情况,不然会导致编译不通过在对象不可空的情况下,可以直接使用这个对象fun getText() : String { return "text"}val text = getText()print(text.length)在对象可空的情况下,必须要判断对象是否为空fun getTe
2022-01-21 09:36:59
126
原创 Android Studio 4.0 最新进展
新的 Android Studio 4.0 更换了全新的启动界面,在今天 Google I/O 中官方发布了 Android Studio 3.5 的 beta 版,一个月之后发布了 Android Studio 3.6 beta 版,而最近的 Android Dev Summit 中为我们带来了 Android Studio 4.0 预览版,今天我们就来看一下,新的 Android Studio 4.0 为开发者带来了哪些新体验!接下来我会依据 Android Dev Summit 分享的内容以及自己.
2022-01-19 11:52:05
251
原创 寒冬已至?四面楚歌的Android工程师该何去何从
寒冬真的来了吗?可能是吧,因为最近几年每年都说是寒冬,说的真的叫人焦虑。不过互联网的整体环境确实不如前几年,即使不说我想大家也能隐约的感受到了。作为曾经炙手可热的Android工程师,现在面临着以下的问题:互联网整体环境不乐观Android开发人员众多但岗位减少,导致要求越来越苛刻大前端趋势、跨平台方案频出、小程序肆虐,Android不再是应用开发唯一的方案人工智能、大数据、区块链等技术炒的火热,培训机构倾巢出动,学校学生疯狂学习,而培训Android出来就失业,大学学Android出来基本也失业
2022-01-19 11:49:48
233
原创 Android篇:2019初中级Android开发社招面试解答(上)
注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。Android篇Activity1、说下Activity生命周期 ?参考解答:在正常情况下,Activity的常用生命周期就只有如下7个onCreate():表示Activity正在被创建,常用来初始化工作,比如调用setContentView加载界面布局资源,初始化Activity所需数据等;onRestart():表示Acti.
2022-01-19 11:44:45
342
原创 Jetpack 叒一新成员 DragAndDrop 框架:大大简化拖放手势开发
对于拖放手势,大家并不陌生,这是在桌面端最稀松平常的操作,比如将文件拖入回收站。随着移动设备的大屏趋势、可折叠设备的愈加发完善,拖放操作在移动平台里端也显得愈加必要和流行!实现拖放手势: Android 平台现存的方案略为复杂。基于此, Jetpack 框架集合里推出了新成员 DragAndDrop 。本文着重阐述该框架的愿景和核心要点,主要内容译自 Android 开发者关系工程师 Paul 在 Meduim 上的 Post:Simplifying drag and drop。本质来说,拖放.
2022-01-19 11:23:50
105
原创 Compose + MVI + Navigation 快速实现 wanAndroid 客户端
前言今年七月底,Google 正式发布了 Jetpack Compose 的 1.0 稳定版本,这说明Google认为Compose已经可以用于生产环境了。相信Compose的广泛应用就在不远的将来,现在应该是学习Compose的一个比较好的时机在了解了Compose的基本知识与原理之后,通过一个完整的项目继续学习Compose应该是一个比较好的方式。 本文主要基于Compose,MVI架构,单Activity架构等,快速实现一个wanAndroid客户端,如果对您有所帮助可以点个Star: wanAn
2022-01-18 15:32:23
8246
原创 卡顿、ANR、死锁,线上如何监控?
一、前言最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、锁信息等,然而,这种方法有一定的局限性,并不是每次都奏效,很多时候是没有堆栈信息给你分析的,例如有些高版本设备需要root权限才能访问/data/anr/ 目录,或者是线上用户的反馈,只有一张ANR的截图加上一句话描述。假如你的App没有实现ANR监控上报,那么你大概率会把这个问题当成“未复现”处理掉,而没有真正
2022-01-18 15:21:18
432
原创 Compose 实现手写春联效果
前言又是一年新春,在这里先给大家拜个早年了。每逢春节,写春联贴春联都是一项必不可少的活动。本次主要使用Compose,实现手写春联的效果。如果对你有所帮助,欢迎点个赞或者评论鼓励一下~爆竹声中一岁除春风送暖入屠苏千门万户曈曈日总把新桃换旧符效果图生成的春联主要思路事件监听我们需要实现手写春联效果,首先就是要做事件监听,Android中自然是监听Action_Down,Action_Move,Action_UP,Compose中应该如何处理呢?其实Compose中也可以利用poi
2022-01-17 18:00:21
6269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人