Android Developer
码龄4年
  • 853,400
    被访问
  • 562
    原创
  • 765,780
    排名
  • 847
    粉丝
  • 22
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2018-12-01
博客简介:

weixin_43901866的博客

查看详细资料
个人成就
  • 获得1,279次点赞
  • 内容获得298次评论
  • 获得2,099次收藏
创作历程
  • 69篇
    2021年
  • 110篇
    2020年
  • 420篇
    2019年
  • 6篇
    2018年
成就勋章
TA的专栏
  • Android
    92篇
  • 性能优化
    1篇
  • 技术
    15篇
  • 程序员
    66篇
  • 面试
    40篇
  • binder
    2篇
  • 阿里
    57篇
  • handler
    1篇
  • 进程通信
  • 头条
    3篇
  • 微信小程序
    1篇
  • 面试真题
    3篇
  • 华为
    4篇
  • 学习资料
    41篇
  • framework
    8篇
  • 移动架构师
    6篇
  • 移动互联网
    14篇
  • 百度
    2篇
  • 资料分享
    40篇
  • 字节跳动
    25篇
  • 职业发展
    7篇
  • 虎牙
  • 阿里巴巴
    23篇
  • 计算机网络
    12篇
  • 腾讯
    53篇
  • 学习路线
    15篇
  • 辅导
    1篇
  • 裁员
    1篇
  • Android程序员安卓
    19篇
  • 视频资料
    9篇
  • 上海
    1篇
  • 长沙
    1篇
  • ios
    1篇
  • rom
    1篇
  • 深圳
    1篇
  • 简历
    1篇
  • 大厂
    6篇
  • 项目经验
    1篇
  • 技术交流
    2篇
  • 学习
    14篇
  • youtube
    1篇
  • 哔哩哔哩
    1篇
  • 开源项目
    4篇
  • 源码
    7篇
  • APP
    8篇
  • 组件化 
    2篇
  • 职级
    2篇
  • 数据结构
    2篇
  • 支付宝
    2篇
  • 滴滴
    6篇
  • offer
    4篇
  • 微信
    2篇
  • BAT
    4篇
  • 失业
    1篇
  • Jetpack
    1篇
  • 短视频
    1篇
  • dddd
  • 薪资
    1篇
  • 算法
    6篇
  • binder 
    2篇
  • 自我介绍
  • 图片库
    1篇
  • glide
    1篇
  • 京东
    14篇
  • livedata
    1篇
  • kotlin
    1篇
  • 项目
    2篇
  • 技术总监
    1篇
  • 外包
    1篇
  • 抖音 
    1篇
  • 点赞
    1篇
  • 编程
    1篇
  • flutter
    14篇
  • 前端
    3篇
  • activity
    1篇
  • mvvm
  • mvc
    1篇
  • Dart
    2篇
  • Dart 
    1篇
  • 路由
    1篇
  • Google
    3篇
  • 启动优化
    1篇
  • 设计模式
    1篇
  • 学习计划
    4篇
  • 程序人生
    49篇
  • 牛客网
    1篇
  • 开发工具
    1篇
  • 三星
    1篇
  • 辞职
    2篇
  • 脱壳
    1篇
  • 逆向
    1篇
  • 公务员
    1篇
  • 1
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 移动开发
    flutter
  • Android
    android jetpackrxjava
  • 软件工程
    性能优化
  • 职场和发展
    面试
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

ASM插桩--多线程运行监测

最近需要优化App启动的时间,现有代码存在以下问题:线程未复用(使用new Thread\HandlerThread),创建线程数过多使用HandlerThread,使用后未销毁(Looper一直等待),占用内存提早start线程,却未使用部分业务方过早初始化业务代码(虽然是异步),影响启动时间由于存在上述问题,需要扫描App从冷启动开始到首页展示出来,中间执行的子线程和主线程执行的情况。需要监测的数据如下:创建的线程情况,包括数量和使用情况执行的runnable.run、AsyncT
原创
发布博客 2021.07.12 ·
351 阅读 ·
0 点赞 ·
2 评论

想搞懂Jetpack架构可以不搞懂生命周期知识吗?

1. 前言Activity生命周期真是一个非常古老的话题,无论是10年前,还是当下。不管是面试还是工作,经常会遇到与Activity生命周期相关的问题。比如“按下返回键和Home键,生命周期方法调用顺序”、“A启动B,它们的生命周期方法调用顺序”。工作中,Jetpack Lifecycle、LiveData、ViewModel等组件都是建立在生命周期之上。在我研究Jetpack Lifecycle、LiveData、ViewModel源码时,我发现它们与组件的生命周期有很大的关系。它们能够自动感知组件的
原创
发布博客 2021.07.09 ·
176 阅读 ·
0 点赞 ·
0 评论

Android 使用 DatePickerDialog 显示时间

效果如下:**老规矩最后有源码,步骤如下:调用 Calendar 类获取年月日**重点:在最后你会发现月份少了个 1,这是正常的,api 中说这个值原始值为 0,自己加个一就好了。2. 将年月日的值放入 DatePickerDialog 中源码如下:布局文件** <TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_
原创
发布博客 2021.07.04 ·
313 阅读 ·
1 点赞 ·
2 评论

AndroidJetpack Livedata最详尽的使用场景分析

Livedata 概览LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。。LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。您可以注册与实现 LifecycleOwner 接口的对象配对的观察者。有了这种关系,当相应的 Lifecyc
原创
发布博客 2021.06.22 ·
245 阅读 ·
0 点赞 ·
0 评论

实战演练!二阶贝塞尔仿微信扔炸弹动画

前言新出来的微信炸屎动画很多人都玩过了,所以先仿照一个微信扔炸弹的动画,在后续有时间会做一个完整的,效果如下:具体实现其中最麻烦的就是绘制抛物线了,爆炸的效果只是播放了一个动画,另外微信貌似都是通过代码绘制的,可能不是动画,奈何没有人家那技术,只能找一张动画来凑合。二阶贝塞尔曲线抛物线在这里是通过二阶贝塞尔曲线来完成,所以先来了解下什么是二阶贝塞尔曲线,从下图中可以发现,二阶贝塞尔曲线有三个关键点,我们可以称作起点坐标、终点坐标,还有控制点。起点和终点坐标好理解,控制点可以理解成开始下降的转
原创
发布博客 2021.06.17 ·
364 阅读 ·
2 点赞 ·
5 评论

在 Android 中使用生物识别

为了保护隐私和敏感数据,应用往往会增加用户登录功能。如果您的应用使用了传统的登录方式,那么它的授权过程可能类似如图 1 中所示: 用户输入用户名和密码,应用会根据输入的数据生成设备凭据,然后将其发送到远端服务器进行验证,通过验证后会返回给应用一个 userToken,随后应用便可使用该 token 去服务器查询受限的用户数据。无论是要求用户每次打开应用都需要登录,还是只要求在安装启动后进行仅此一次的登录,图 1 所示的流程都适用。△ 图 1: 未使用生物识别的授权流程然而,图 1 这种授权方式有一些弊
原创
发布博客 2021.06.09 ·
340 阅读 ·
0 点赞 ·
0 评论

Handler机制与原理

为什么会出现内存泄漏问题呢?分析Handler使用是用来进行线程间通信的,所以新开启的线程是会持有Handler引用的,如果在Activity等中创建Handler,并且是非静态内部类的形式,就有可能造成内存泄漏非静态内部类是会隐式持有外部类的引用,所以当其他线程持有了该Handler,线程没有被销毁,则意味着Activity会一直被Handler持有引用而无法导致回收MessageQueue中如果存在未处理完的Message,Message的target也是对Activity等的持
原创
发布博客 2021.06.01 ·
160 阅读 ·
1 点赞 ·
1 评论

Android Studio 自定义快捷键调用外部程序

工作效率还能再提升记得刚工作的时候,同事教了我一些做事的方式和方法,至今印象深刻,“当一件事情重复做三次,就要尝试开发一个工具提升去效率”、“当一个错误出现三次时,必须要设法解决它,因为它可能伴随整个软件的使用周期”。我后面工作中一直谨记,少做重复劳动,多做提升工作效率的事情,不能把一年的工作经验用五年。提升工作效率,除了开发新工具,另外学会使用 IDE 的快捷键也很重要,很多人忽略了这一点。快捷键,学习一次,后面次次受益,使用过快捷键的朋友,肯定知道快捷键的效率远高于鼠标点击,还有一点是,敲击键盘明
原创
发布博客 2021.05.20 ·
119 阅读 ·
0 点赞 ·
0 评论

NestedScrollView嵌套滑动源码解读

1、前言滑动对于android来说,是一个必不可少;它不复杂,大家都知道在onTouchEvent中,让它滑动就完事了,说它复杂,其嵌套处理复杂;在本系列文章,最终是为了熟悉嵌套滑动机制;对于滑动,分为下面几篇文章来完成解读:滑动基础ScrollView滑动源码解读NestedScrollView嵌套滑动源码解读CoordinatorLayout-AppBarLayout-CollapsingToolbarLayout复杂滑动逻辑源码解读在本章内,本章从两个嵌套的两个视角来分析子滑动视图
原创
发布博客 2021.05.19 ·
134 阅读 ·
0 点赞 ·
0 评论

Jetpack Compose 自定义布局以及固有特性测量

这篇文章我们会讲解下,Compose中如何去自定义布局,以及Intrinsic Measurement(官方翻译为固有特性测量)的理解跟使用。一:自定义布局自定义布局可以通过两种方式去处理,一种是使用布局修饰符Modifier.layout,一种是使用Layout去创建自定义布局。我们先来讲下Modifier.layout的方式1.1 使用布局修饰符来实现自定义布局我们自定义一个Modifier的扩展函数,Modifier.customCornerPosLayout。该方法的作用就是可以按我们传入的
原创
发布博客 2021.05.18 ·
289 阅读 ·
0 点赞 ·
1 评论

android高级UI布局层次结构及布局加载流程源码解析

我们写的布局位于DecorView中,DecorView是PhoneWindow的成员变量,而PhoneWindow又是Activity的成员变量,我们称这为布局的层级结构,下面我们从源码出发看看是如何形成的;一、布局层次结构分析1、setContentView分析当调用到我们的Activity的onCreate生命周期方法中后,接着会调用setContentView方法将我们传入的布局显示在界面上,那么这一过程如何实现呢?相关方法调用如下所示。setContentView方法会调用父类Activi
原创
发布博客 2021.05.15 ·
282 阅读 ·
1 点赞 ·
1 评论

一篇文章带你入门音视频

一、概述1)流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。2)封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。3)视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。4)音频编码的主
原创
发布博客 2021.05.13 ·
107 阅读 ·
0 点赞 ·
2 评论

研究Android音视频-3-在Android设备上采集音视频并使用MediaCodec编码为H.264

本文解决的问题本文主要使用MediaCodec硬编码器对Android设备采集的音视频编码封装音视频基础编码器封装音频编码器封装视频编码器使用新封装的视频编码器改造示例2使用Camera进行视频录制(YUV420SP)并保存为视频流(H.264)使用AudioRecord进行音频录制(PCM)并保存为音频流(AAC)使用MediaMuxer混合器合并视频和音频为一路流(H.264)(待完成)示例链接一、封装音视频基础编码器定义编码接口类ICodec:interface IC.
原创
发布博客 2021.05.10 ·
228 阅读 ·
0 点赞 ·
0 评论

做Android开发,如何使用 Kotlin 提高生产力!

Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力简洁、简单且高效Kotlin 的简洁性对开发
原创
发布博客 2021.05.07 ·
103 阅读 ·
0 点赞 ·
0 评论

Android组件化和插件化开发

项目发展到一定程度,就必须进行模块的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化。组件化开发说起组件化少不了提起AS模块化的概念,其实两种方式的本质思想是一样的,都是为了代码重用和业务解耦。模块化模块(Module),Android Studio提出的概念,它是根据不同关注点将原项目中共享的部分或业务抽取出来形成独立module,这就类似我们集成的第三方库的SDK。 Module包含两种格式: applica
原创
发布博客 2021.04.22 ·
153 阅读 ·
1 点赞 ·
1 评论

梦想照进现实!记录一下我的头条Android面试心路历程(非985/211)

开篇先讲一下我的职业生涯哈,不想看的可以直接到最后一段。我是普通二本出身,一直飘在北京,先是做web网站开发,后转到了Android移动端,也没有什么好运气,就靠一点小机智,得过且过混到16年初,靠着移动互联网大浪把我推到了一家二线互联网企业,在这里才算真正重构了自己,感谢当时遇到的同事,以及有可以和公司一起成长的机会,先后经历了完整的插件化和RN重度封装,知道了虚拟机和Android源码的重要,并开始积累。18年初,由于公司内部重大调整,动荡不安,再加上自觉jvm和framework很溜了,于是开始看
原创
发布博客 2021.04.21 ·
173 阅读 ·
2 点赞 ·
0 评论

测试应用启动性能

用于测试启动的 Shell 命令本文的编写目的,更多的在于介绍性能、启动测试以及我进行启动测试背后的原因。但如果您只是希望能够快速获得结论,可以直接参考下面的内容:尽可能锁定 CPU 主频 (请参阅下文);在命令行运行如下命令 (保证您的设备处于连接状态)。$ for i in `seq 1 100`> do > adb shell am force-stop com.android.samples.mytest> sleep 1> adb shell
原创
发布博客 2021.04.19 ·
99 阅读 ·
0 点赞 ·
0 评论

客2消,客1消,客0消...脉脉劝退客户端多次的你们究竟是何用意?

经常逛逛脉脉职言平台,作为一名Android开发者,难免会更多的关注行业动态。脉脉职言充斥着:“客户端内卷,客户端3年内消失、客户端2年内消失、客户端1年内消失,客户端已消失。”言论。最近看到很多客户端要消失的言论,整体感觉就是贩卖焦虑。不过,客户端在走下坡路确实是真的。目前客户端存在的原因在于跨平台性能不够好,但差距在缩减。客户端工作三年和工作五年十年的差距,大多数都在深度广度上,源码了解更深,解决的bug多一些,但工作三年开发的 app 已经够用。现在贩卖焦虑也是好事,能提前有危机意识。
原创
发布博客 2021.04.14 ·
2565 阅读 ·
11 点赞 ·
10 评论

在外包公司从Java后端干到安卓开发,你醒醒吧!

这是一位网友和我分享的他的经历:由于他的学历远达不到BAT的要求,大专毕业的他在找工作的时候发现留给自己的机会并不多,最后去了一家不知名的小公司。他告诉我入职后才发现这家公司其实是个外包公司,里面的业务部门和制度相当混乱,负责招聘的HR同时兼管着财务和员工薪资的发放。老板凭人脉从外面接一些项目回来给他们做。吴瑞初出校门没有经验,只能硬着头皮做下去,可他越做越窝心。先是工作内容的问题。当初他应聘的岗位是后端开发,可现实却是他既要写后端,也要写客户端。本着做的多做的广可以学到更多的原则,他并不是非常在
原创
发布博客 2021.04.13 ·
2017 阅读 ·
3 点赞 ·
1 评论

RecyclerView 是 “何方神圣“?为什么选择它呢?

RecyclerView 是一款非常强大的 widget,它可以帮助您灵活地显示列表数据。当我开始学习 RecyclerView 的时候,我发现对于复杂的列表界面有很多资源可以参考,但是对于简单的列表展现就鲜有可参考的资源了。虽然 RecyclerView 的组成结构乍一看有些复杂,但是深入理解以后您会发现它其实非常简单明了。本文会通过创建一个简单的 RecyclerView 实现一个列表来显示不同种类的花的名字。在实现的过程中,我也会将 RecyclerView 的每个部分揉碎了展现给大家,这
原创
发布博客 2021.04.11 ·
102 阅读 ·
0 点赞 ·
0 评论
加载更多