自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TechMix的博客

路虽远,行则可至。

  • 博客(73)
  • 资源 (12)
  • 收藏
  • 关注

原创 【ChatGPT】ChatGPT:AI Tutor—用于领域学习导师的命令

对我们很有帮助的几个命令。/test: 让AI导师提供一些测试题目验证你的知识点掌握和理解情况config: 更新您的 AI Tutor 配置。/plan: 根据您的喜好制定课程计划。/start: 开始教学计划,这里如果是要学习指定的某个章节,可以/start lession2(2是对应的章节编号,这里跳转到二级章节实测还不行,可能跟教程目录有关系,TODO。/continue: 如果输出中断了输入这个命令能够继续回答。

2024-05-18 13:51:25 151

原创 Android的LMK机制学习笔记

详细介绍了Android的Low Memory Killer (LMK)机制。分享了自己在处理后台应用程序被杀死问题时的分析过程。LMK机制是基于Linux的OOM killer修改而来,主要通过驱动层实现,定期检查系统可用内存,并根据预设的内存阈值,杀死优先级低的进程。文章还深入解析了lowmemorykiller.c文件的核心逻辑,包括内存阈值的设定、进程遍历和查杀流程。文中还探讨了内核层面的log信息,以及AMS如何通知被杀进程进行数据清理。

2023-02-07 00:10:56 1082

原创 RemoteServiceException: can‘t deliver broadcast 问题分析

源码层面分析RemoteServiceException: can't deliver broadcast 问题的根本原因。

2022-12-08 00:21:59 7306 9

原创 ViewModel实例什么时候被回收

一、ViewModel存在的意义二、怎么创建?三、生命周期?什么时候被销毁?

2022-10-16 23:45:10 2524 2

原创 OkHttp报unexcepted end of stream on...错误分析

OkHttp报unexcepted end of stream on...错误分析和解决方法。

2022-06-24 12:30:27 15479 2

原创 OkHttp请求时Keep-Alive无法生效问题修复记录

一、问题情形还原二、问题定位过程三、小结

2021-12-01 00:12:02 7147

原创 【用法总结】Systrace使用基础

一、systrace基本介绍被弃用了?二、快捷键用法二、systrace命令用法三、systrace报告怎么看?3.1 CPU调度信息3.2 线程状态信息3.2.1 绿色 : 运行中(Running)3.2.1 蓝色:Runanble状态3.2.1 白色:Sleeping状态3.2.1 橘色:不可中断的睡眠态 (Uninterruptible Sleep - IO Block)3.2.1 紫色 : 不可中断的睡眠态(Uninterruptible Sleep)3.4 帧率信息3.5 应用启动耗时分析。

2024-03-21 00:26:20 1038

原创 【用法总结】微信小程序开发第一印象

小程序的项目结构基本是按照前端最基础架构设计的,界面、逻辑、布局样式分别在不同的源文件中编写,但是和前端不同的是,微信小程序的源文件后缀都是被微信重新定义的。有点像某遥遥领先厂设计的,原本Android系统的Activity重新设计成了XXXAbility,实际上的指责是很类似的,因为实际上完成功能逻辑的架构模型是想通的,这个思想上并没有特别大的变化。

2024-01-28 23:11:22 911

原创 【java面试题】实现equals(Person person)方法的Person存入HashSet无法排重!

先看下面的代码,想下会输出什么?有哪位大佬知道是为什么?

2024-01-20 21:05:20 403

原创 【用法总结】LiveData组件要点

总结在日常开发中LiveData数据注册-更新的逻辑,什么时候更新和注意事项。

2024-01-14 23:42:04 883

原创 【用法总结】无障碍AccessibilityService

因为开发的是系统应用,也没必要主动去打开无障碍服务开关,于是觉得无障碍服务有很大的可发挥空间,于是借助无障碍服务,实现了一个显示当前展示的Window/Activity/Dialog的悬浮窗,用于演示无障碍服务的用法及其强大之处。如上介绍的,无障碍服务是能够获取到各种交互事件,从onAccessibilityEvent回调中可轻松拿到交互控件的packageName和className,所以基于无障碍服务能力的支持,也就很容易实现悬浮展示当前Activity的功能了。)则只会收到对应包名应用的事件。

2024-01-14 23:10:52 1586

原创 使用CountDownLatch做并行任务时死锁问题解决

经过一番调研,最后选择使用较为常用的CountDownLatch配合线程池将无依赖的接口由串行改成并行,起初是使用同一个线程池,结果在拆分任务较多时,并发量大时出现了线程死锁问题,最后通过Android Studio自带的dump线程的功能,分析发现是在线程池的任务队列中死锁了。因为业务需求背景,某些功能页面会请求较多的网络接口,毕竟后端更多的是考虑业务的解耦,会造成客户端优化较多接口请求导致的等待耗时(转圈)问题,后端推动接口的合并困难,但是前端也是可以做一些优化的。

2024-01-11 09:25:34 528

原创 【性能优化】GSON解性能瓶颈分析

    GSON是Google提供的开源库,使用很便捷,但是在使用过程中也发现了其短板,在Bean类结构复杂时,进行反序列化耗时占比较高,尤其是很多在应用启动阶段需要反序列化一些内置的数据时,很让人头疼,通过抓Trace每次都能发现这货肯定是大头。    为了从正面优化这个问题,于是我翻看了GSON反序列化的源码,实现了能优化的方案,希望能帮助到同样面临该问题的同学们,如有问题也可以提出来。如上图GSON解析过程的耗时可以

2024-01-11 09:23:13 502

原创 Kotlin协程核心理解

1、协程基本概念,和进程线程的关系,协程的关键API总结2、挂起函数的作用和执行流程3、Android常见的协程使用场景写法4、几种协程调度器的适用场景总结5、如何取消协程

2023-10-29 16:07:48 538

原创 AudioManager#abandonAudioFocus之后仍然泄漏?

记录使用AudioManager#requestAudioFocus()之后调用abandonAudioFocusRequest反注册,仍然内存泄漏问题。因为存放OnAudioFocusChangeListener的Map的key是用AudioManager对象的toString()拼接listener.toString()构造的。

2023-09-05 22:10:51 402

原创 Kotlin和Java互操作时的可空性:你踩到坑了嘛?

kotlin做为后起之秀,在空指针的问题上进行了升级,即:把本来运行时才能暴露出来的空指针问题,前置到编译期就能让开发者发现,在编写代码时就显式的声明变量类型是不是可空类型,如果将可空类型赋值给不可空类型,或者不可空类型赋值给可空类型,就会报编译时错误,从而减少在运行时抛出异常的概率。

2023-08-13 11:43:11 685

原创 一篇文章带你读懂Service为什么会ANR?

Service的ANR触发原理,是在启动Service前使用Handler发送一个延时的Message(埋炸弹过程),然后在Service启动完成后remove掉这个Message(拆炸弹过程)。如果在指定的延迟时间内没有remove掉这个Message,那么就会触发ANR(没有在炸弹爆炸前拆掉就会爆炸),弹出AppNotResponding的弹窗,让用户选择是继续等待还是直接退出应用程序。通过源码更深层次的理解ANR是这么产生的,从而在日常开发和实际ANR问题分析时能够游刃有余。

2023-07-25 18:05:52 295

原创 ViewOverlay-使用简单实践

简单记录下viewOverlay的使用方法和常见使用问题。

2023-06-08 00:41:27 799

原创 RxJava中DISPOSED状态的被观察者任务执行onError/onSuccess导致的崩溃问题

居然直接获取了当前的UncaughtExceptionHandler然后转调uncaughtException,要知道这样会走应用的崩溃上报逻辑,即使是逻辑上书写的错误,也会导致崩溃上报(一般应用自定义的UncaughtExceptionHandler会弹出崩溃页面,并让用户确认是否上报崩溃日志,最后将进程kill掉)。尝试把异步任务mApi.loadData()延迟2000ms后,频繁切换Activity的onResume和onPuase状态,崩溃复现。

2023-04-21 01:02:28 562

原创 初始ASM字节码基础(一)

字节码插桩在开发工作中越来越常见,不管是业务代码编写(比如:登录逻辑)、埋点、还是性能监控中有很重要的作用。有一个感受,就是很多技术不是没有用武之地,而是压根不了解导致在做技术调研时,根本没有这样的意识去使用某些非常有效的工具,所以就需要我们平时对基础技术有充分的了解。

2023-04-01 21:56:38 831

原创 Android Studio Build model...卡住问题——正确的设置/取消代理(工具的细节问题)

我们在Android Studio的偏好设置里面设置了代码,但是想取消代理时,如果只是在下面配置代理的位置取消,那你就年轻了,还得需要在user_name/.gradle/gradle.propterties文件中删掉gradle的代理,否则可能有些朋友在公司网络下,就没法访问内网的maven仓库了,会导致编译失败错误。

2023-03-25 23:42:00 1534

原创 Kotlin中3种定义静态方法的方式优劣对比

最近工作中遇到一个问题,通用的工具方法,出于kotlin和java代码中都能方便调用,于是想定义到静态工具类中。但是发现使用Companion对象+@JvmStatic的方式定义的方法,通过工具转成字节码再反编译之后,查看还是跟Java中的静态方法不一样,于是改成了顶层函数的方式声明,故出此文做下对比,以记录两种定义静态方法的差别。

2022-10-10 00:08:01 1184

原创 Leanback控件的item中存在可上焦子View时的寻焦逻辑处理

LeanBack的VerticalGridView中嵌套HorizontalGridView结构,中间的item一般作为一个整体来进行寻焦和响应事件,但是在其内部添加可上焦的子View之后,会存在寻焦和边界检测的问题。

2022-09-29 23:33:02 228

原创 Mac os镜像下载地址记录

mark一下mac os镜像的神级网站。

2022-09-24 16:15:59 2755

原创 adb常用命令总结[持续更新]

总结开发常用的adb命令,提高开发效率。

2022-09-03 13:52:10 1730

原创 记录下代码重构怎么做更稳妥的思考

1. 追本溯源,清楚逻辑2. 代码未动,方案先行3. 及时记录改动点、影响面4. 改完一个点,要自测自测自测最小化commit,message要规范清晰

2022-07-12 00:19:22 219

原创 Gradle开启R8反混淆对不上问题解决记录

记录使用Android-SDK/tools下的proguardgui工具,在开启R8编译后,根据mapping.txt混淆没效果问题。

2022-06-25 12:40:18 1281

原创 bugreport工具的使用

记录使用bugreport获取应用异常日志的方法。

2022-06-24 12:42:38 1128

原创 Android中View绘制原理分析

1.Activity/Fragment/Dialog,Window和View的三类核心成员的关系2.View和WindowManager的关系2.ViewRootImpl的作用2.View绘制是从何时开始的?是怎么分发到我们View上的?3.View/ViewGroup的三大工作阶段4.理解了View的工作原理后再看自定义View的实现思路View与ViewRootImpl的绑定5.小结

2022-04-23 01:22:51 593 1

原创 OKHttp源码学习笔记(一)

OKHttp源码的学习笔记,记录一下。

2021-11-30 22:13:26 180

原创 jvm类加载机制学习基础(一)

一.类加载机制理解 二.什么情况下会触发类的加载?三.类加载会经历哪些阶段?四. 类加载时类成员的加载顺序五. 类加载器的双亲委派模型

2020-12-25 21:06:12 1622 2

原创 从源码角度学习ThreadLocal原理

1.ThreadLocal基本介绍相信使用java语言做开发的同学,肯定多或多或少了解过ThreadLocal,简单来说就是一个“以当前Thread对象作为key的key-value存储结构,能实现多线程的读写安全”。那么他究竟是怎么实现的呢,它的实现源码并不是很长,下面直接从源码上来分析。先看一个使用ThreadLocal存取数据的例子:1.1 直接使用无参构造函数创建对象//使用无参构造函数创建ThreadLocal实例,默认值为nullfinal ThreadLocal<Integer

2020-05-17 20:50:50 145

原创 Service组件StartService()方式启动流程分析

1.前言AMS是Android四大组件工作的核心服务类,Activity和Service的启动过程均由其完成。2.ContextImpl->startService(): @Override public ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(...

2020-03-29 15:49:52 566

原创 Java线程内存模型的理解(一)

1.概述    在Java中,因为有jdk的封装,线程使用起来很方便,new一个线程然后start就好了。但是由于存在多线共享同一个数据的原因,经常会有多线程安全的问题。比如在A线程修改了某个变量的值,B线程是不知道得,等到会写到线程的主内存时,最终变量的值已经不是正确的了,再比如,整型变量a,在两个线程中进行自增操作(a++),最后也不会是我们...

2020-03-05 22:18:58 278

原创 Activity启动基本流程分析

1.概述2.Activity启动流程源码分析

2019-12-13 00:35:22 559

原创 布局优化之ViewStub源码分析

1.前言    对于Android的单线程模型来说,把控好主线程中的操作时是至关重要的。布局复杂了,很容易引起卡顿,或者某些情况下界面展示慢的情况,我们都知道ViewStub能实现懒加载,减少布局渲染时间,那么它究竟用了什么方法来实现的,这里做一个学习记录,加深印象。2.如何优化布局    ViewStub是不可...

2019-10-31 23:34:58 518

原创 Java反射基础总结

1.前言Java语言特性中,最经常的一个就是反射机制,最近开发有用到,所以再这里整理一篇学习笔记。简单理解反射就是在运行时获得程序中每一个类型的成员和成员的信息,即使是private修饰的也是可以获取到的。2.基础使用基本API//java.lang.Class类中://1.根据类全限定名获取类的Class对象public static Class<?> forName...

2019-10-20 16:43:29 430

转载 jdk7之前,匿名内部类访问局部变量加final修饰的问题(综合两种说法)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-15 16:57:54 496

原创 从源码分析Activity,Window和View的关系

从源码角度分析Activity,Window和View的关系,总结学习经验,让您更加理解Android的GUI设计原理。

2019-08-18 19:55:47 938

原创 java虚拟机之运行时内存分区理解

一.jvm内存区域的划分二. 对象的四种引用类型 1.强引用 2.软引用: SoftReference 3.弱引用: WeakReference 4.虚引用: PhantomReference 5. 四种类型引用特性总结

2019-07-20 16:39:52 324

420开发者大会讲师演讲精华包.zip

Android主会场,大数据Ai会场,跨平台会场,开发者画像报告

2019-07-16

代码优化:有效使用内存.pdf

本书详细的介绍了各种代码优化编程技术:全书分为4章,第一章介绍如何确定程序中消耗CPU时钟最多的热点代码,

2018-05-10

TortoiseGi用户手册.pdf

TortoiseGi用户手册.pdf,中文版介绍git乌龟的使用,,,

2018-05-10

2017中国FinTech独角兽企业发展报告.pdf

2017年5月,长城战略咨询发布《2016中国大数据独角兽企业发展报告》

2018-03-25

Android软件安全与逆向分析(完整版).pdf

Android软件安全与逆向分析(完整版),国内第一本Android软件安全的书籍,很经典

2017-10-03

kotlin-for-android-developers-zh.pdf

这本书并不是一本语言参考书,但它是一个Android开发者去学习Kotlin并且使用在 自己项目中的一个工具。我会通过使用一些语言特性和有趣的工具和库来解决很多 我们在日常生活当中都会遇到的典型问题。

2017-10-03

阿里巴巴java开发规范文档

阿里巴巴技术开发团队2017年2月更新

2017-07-23

qq5.0界面效果实现

通过继承HorizontalScrollView实现qq5.0的SlidingMenu效果

2017-05-30

安卓学习手册,免注册用,免更新

安卓学习手册,免注册用,免更新。已经完美破解

2016-11-21

XReplace-2.2完美破解免注册版

完美破解免注册的批量文件修改工具,打开可执行程序即可使用

2016-11-21

Git教程.pdf

史上最浅显易懂的教程

2016-06-26

Android编程权威指南pdf

Android开发实战的经典之作

2016-05-27

空空如也

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

TA关注的人

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