自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (5)
  • 收藏
  • 关注

转载 再学一遍android:fitsSystemWindows属性

可以看到,这里我们在ImageView的外面又包裹了一层CollapsingToolbarLayout,并且给CollapsingToolbarLayout也设置了android:fitsSystemWindows属性,这样CollapsingToolbarLayout就可以将内容延伸到状态栏区域了。可以看到,当监听到WindowInsets发生变化时,我们调用systemWindowInsetTop即可获取到状态栏的高度,然后对不需要延伸到状态栏区域的控件进行相应的偏移即可。

2023-12-27 10:27:02 386

原创 一文带你再也不惧怕NDK开发,覆盖所有层面~

如果直接在.c文件中include “cppHeader.h”是会报错的,因为cppHeader.h中包含了extern “C”,而将cppHeader.h包含进来,会直接展开cppHeader.h内容,而extern “C”在C语言中是不支持的,所以会报错。C语言中并没有重载和类这些特性,故不会像C++一样将log(int i)编译为_log_int,而是直接编译为_log函数,当C++去调用C中的log(int i)方法时,会找不到_log_int方法,此时extern “C”的作用就体现出来了。

2023-03-16 13:16:27 1720

原创 app\build\intermediates\external_file_lib_dex_archives\debug\out解决方法

查看AndroidStudio对应的目录,不存在的话手动创建吧,能解决问题的。

2022-11-03 14:37:55 324

转载 select、poll、epoll程序实例

select、poll、epoll程序

2022-07-11 18:00:35 292

转载 整理一波开源的后台管理项目

开源后台管理

2022-01-27 11:55:44 388

转载 探索 Android 消息机制

1. Android 消息机制概述Android 消息机制是由 Handler、Looper 和 MessageQueue 三者合作完成的,消息机制可以分为消息机制初始化、消息轮询、消息发送和消息处理 4 个过程来理解,消息机制是基于 Linux 的事件轮询机制 epoll 和用来通知事件的文件描述符 eventfd 来实现的 。消息机制初始化过程是从消息轮询器 Looper 的 prepare() 方法开始的,当线程调用 Looper 的 prepare() 方法时,prepare() 方法会

2021-08-10 10:34:11 810

转载 Android 组件通信中有哪些不为人知的细节?

我们知道Android 四大组件:Activity/Service/Broadcast/ContentProvider 能够进行跨进程通信,它们均是借助Binder实现跨进程通信的能力。四者之间又有千丝万缕的联系,本篇将从宏观角度分析四者通信核心以及联系与区别。通过本篇文章,你将了解到:1、四大组件通信基础2、Activity 与AMS 交互3、Service 与AMS 交互4、Broadcast 与AMS 交互5、ContentProvider 与AMS 交互1四大组

2021-08-02 11:30:00 135

转载 华为统一扫码服务(Scan Kit)

简介华为统一扫码服务(Scan Kit)提供便捷的条形码和二维码扫描、解析、生成能力,帮助开发者快速构建应用内的扫码功能。得益于华为在计算机视觉领域能力的积累,Scan Kit 可以实现远距离码或小型码的检测和自动放大,同时针对常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,提升扫码成功率与用户体验。Scan Kit 支持 Android 和 iOS 系统集成。其中,Android 系统集成 Scan Kit 后支持横屏扫码能力。支持的设备平台 设备类型

2021-07-28 14:47:46 4232 3

转载 IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?

安装插件教程在这里直接搜索就行了强烈推荐的插件Presentation Assistant 快捷键展示录屏或者共享的时候,效果极佳Codota— 代码智能提示还可以搜索相关代码的示例Codota还包含一个网站:https://www.codota.com/codeAlibaba Java Code Guidelines— 阿里巴巴 Java 代码规范可以切换中英文有什么不符合阿里巴巴Java开发手册的都会显示出来Translat

2021-07-23 13:35:30 97

转载 MotionLayout:布局中的战斗机 Oyeah!

MotionLayout 是 ConstraintLayout 的子类,可以基于动画和手势实现效果炫酷的布局切换。implementation'androidx.constraintlayout:constraintlayout:2.0.0'ConstraintLayout 的 2.0 以上就可以使用 MotionLayout 了,目前最新版是2.1.0-beta02。将布局转换为MotionLayoutMotionLayout 是ConstraintLayout 的子类,用Cons..

2021-07-23 09:58:07 219

转载 探索 Android 网络优化方法

目录前言1. 网络优化的三个要点1. 多维网络优化应该是多维的,一般情况下,一谈到网络优化,大部分人首先想到的就是流量消耗,但是实际上流量消耗多少只是网络优化的其中一个维度。只对流量消耗一个维度进行优化是不够的,甚至有的团队即便在流量优化上也没有做好,比如对于网络流量的消耗统计不够全面和精确。2. 精准在做网络流量统计时,我们要做精准度量,如果只是获取了具体消耗了多少的值,对于我们定位和解决问题是没有太大的帮助,因为这个值只能表明用户用了多

2021-07-23 09:48:36 941

转载 Android实现一个炫酷的自定义View 时钟

一、背景1.1、控件效果要实现的自定义控件效果大致如下,实现过程中用到了比较多的自定义View的API,觉得比较有代表性,就分享出来也当做学习总结 项目代码已上传github github.com/DaLeiGe/And…1.2、从功能上分析一下这个控件,大致有以下特点随机运动粒子从圆周向圆心运动,并与切线方向有正负30°的角度差,粒子透明度、半径、运动速度随机,运动超过一定距离或者时间消失 背景圆有一个从内到外的渐变色 计时模式下圆环有一个颜色渐变的顺时针rotate动画 整

2021-07-23 09:40:23 486

转载 Glide做了哪些优化?

前言Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点。本文以Glide做了哪些优化为切入点,介绍与学习Glide的源码与原理,如果对您有所帮助,欢迎点赞。Glide做了哪些优化?要想要回答这个问题,我们可以先想一想,如果我们自己要实现一个图片加载框架,我们会思考什么问题?1.图片下载是个耗时过

2021-07-21 13:50:38 408 1

转载 哔哩哔哩在Hilt组件化的使用 | 技术探索

DI(Dependency Injection),即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。最近业务同学需要接入谷歌推的Hilt框架。因为哔哩哔哩的业务上很容易出现业务层面的交叉,而因为项目.

2021-07-20 10:35:55 499

转载 卡顿分析过程中的一些疑问 | Systrace 实战

当我们说 流畅度 的时候,我们说的是什么?不同的人对流畅性(卡顿掉帧)有不同的理解,对卡顿阈值也有不同的感知,所以有必要在开始这个系列文章之前,先把涉及到的内容说清楚,防止出现不同的理解,也方便大家带着问题去看这几篇问题,下面是一些基本的说明:1、对手机用户来说,卡顿包含了很多场景,比如在 滑动列表的时候掉帧、应用启动白屏过长、点击电源键亮屏慢、界面操作没有反应然后闪退、点击图标没有响应、窗口动画不连贯、滑动不跟手、重启手机进入桌面卡顿 等场景,这些场景跟我们开发人员所理解的卡顿还有点不一样,开发人

2021-07-20 10:31:48 669

转载 推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架,快来试试它!

在SpringBoot项目直接使用okhttp、httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一管理。因此,在这里推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架retrofit-spring-boot-starter,使用非常简单方便,同时又提供诸多功能增强。目前项目已经更新至2.2.2版本,并且会持续进行迭代优化。github项目地址:github.com/LianjiaTech…gitee项目地址:gitee.com/lianjiatech…

2021-07-20 10:27:18 120

转载 ThreadLocal的使用场景及使用方式

两大使用场景-ThreadLocal的用途典型场景1:每个线程需要一个独享的对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random)典型场景2:每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的麻烦。典型场景1:每个线程需要一个独享的对象每个Thread内有自己的实例副本,不共享;举例:SimpleDateFormat。(当多个线程共用这样一个SimpleDateFormat,但是这个类是不安全的) 2..

2021-07-17 14:00:13 241

转载 手写堵塞队列

1.什么是队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列其实就是跟平时排队一样,按照顺序来,先排队的先买到东西,后排队的后买到东西,排队的第一个叫队头,最后一个叫队尾,这就是队列的先进先出,这是和栈最大的区别。2.什么是堵塞队列?当队列为空时,消费者挂起,队列已满时,生产者挂起,这就是生产-消费者模型,堵塞其实就

2021-07-12 15:45:54 95

原创 IDEA酷 主题

第一款:Xcode-Dark Themehttps://plugins.jetbrains.com/plugin/13106-xcode-dark-theme/versions第二款:Vuesion Themehttps://plugins.jetbrains.com/plugin/13106-xcode-dark-theme/versions第三款:One Dark themehttps://plugins.jetbrains.com/plugin/11938

2021-07-12 15:41:08 1502

转载 AAB 什么鬼?竟敢打压鸿蒙?

Google 自8月起要求 Google Play 上架的应用必须采用 AAB 的新格式,对我来说这并非新闻,早在去年12月份官方就提前做了通知:https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html令我惊讶的是,这样一条“旧闻”最近却被炒得沸沸扬扬,原来竟还是因为蹭了鸿蒙的热度:要知道 AAB 的首次亮相是在2018年的 GoogleI/O 上,难道彼时谷歌

2021-07-12 15:35:17 273

转载 什么是NIO?NIO的原理是什么机制?

NIO和IO到底有什么区别?有什么关系?首先说一下核心区别: NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的。所以在效率上的话,肯定是NIO效率比IO效率会高出很多。 NIO不在是和IO一样用OutputStream和InputStream 输入流的形式来进行处理数据的,但是又是基于这种流的形式,而是采用了通道和缓冲区的形式来进行处理数据的。 还有一点就是NIO的通道是可以双向的,但是IO中的流只能是单向的。 还有就是NIO的缓冲区(其实也

2021-07-12 15:30:50 263

转载 Systrace实战:彻底搞懂卡顿原理!

当我们说 流畅度 的时候,我们说的是什么?不同的人对流畅性(卡顿掉帧)有不同的理解,对卡顿阈值也有不同的感知,所以有必要在开始这个系列文章之前,先把涉及到的内容说清楚,防止出现不同的理解,也方便大家带着问题去看这几篇问题,下面是一些基本的说明。1、对手机用户来说,卡顿包含了很多场景,比如在 滑动列表的时候掉帧、应用启动白屏过长、点击电源键亮屏慢、界面操作没有反应然后闪退、点击图标没有响应、窗口动画不连贯、滑动不跟手、重启手机进入桌面卡顿 等场景,这些场景跟我们开发人员所理解的卡顿还有点不一样,开发人

2021-07-08 10:28:31 2316

转载 Android平台HTTPS抓包解决方案及问题分析

HTTP协议发展至今已经有二十多年的历史,整个发展的趋势主要是两个方向:效率和安全。效率方面,从HTTP1.0的一次请求一个连接,到HTTP1.1的连接复用,到SPDY/HTTP2的多路复用,到QUIC/HTTP3的基于UDP传输,在效率方面越来越高效。安全方面,从HTTP的明文,到HTTP2强制使用TLSv1.2,到QUIC/HTTP3强制使用TLSv1.3,越来越注重数据传输的安全性。总而言之,HTTP协议的发展对用户是友好的,但是对开发者而言却不那么友善。抓包是每个程序员的必修技能之一,尤其是在接

2021-07-08 10:26:01 728

转载 抖音 Android 性能优化:新一代全能型性能分析工具 Rhea!

本文选自「抖音 Android 性能优化」系列文章。「抖音 Android 性能优化」系列文章是由抖音 Android 基础技术部门技术专家倾力打造的技术干货内容,和大家分享基础技术团队在打造极致用户体验的抖音的过程中,收获的性能优化方法论、工具和实践,与各位技术同学一起交流成长。用户交互响应的耗时,作为 Android 用户日常感知最深的一项性能指标,在日常开发中有着非常重要的意义。而抖音 Android 基础技术团队为打造极致的交互响应体验,一直在致力于极致性能的探索,其中就包括如何打造极致的耗时.

2021-07-07 13:39:19 587

转载 算法 时间复杂度概念及案例

概念常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分,如果记为f(N),那么时间复杂度为O(f(N))。算法的时间复杂度,用来度量算法的运行时间,记作:O(f(N))。它表示随着 输入大小N的增大,算法执行需要的时间的增长速度可以用f(N)来描述。上面概念可能比较抽象,下面...

2021-07-05 15:23:05 209

转载 Java序列化和反序列化为什么要实现Serializable接口

目录 序列化和反序列化 什么时候需要用到序列化和反序列化呢? 实现序列化和反序列化为什么要实现 Serializable 接口? 实现 Serializable 接口就算了,为什么还要显示指定 serialVersionUID 的值? Java 序列化的其他特性 static 属性为什么不会被序列化? 最近公司的在做服务化, 需要把所有 model 包里的类都实现 Serializable 接口,同时还要显示指定 serialVersion...

2021-07-05 15:07:57 82

转载 从害怕到玩转Android代码混淆

0x0、引言Android代码混淆,老生常谈了,不过大部分Android仔对它的认识可能还处于这样的阶段(比如:写这篇文章前的我):1、日常开发Debug包时不用混淆,正式发布Release包前开启代码混淆; 2、混淆好处① → 类、方法、变量名变成短且无意义的名字,提高反编译后代码的阅读成本; 3、混淆好处② → 删除无用的类、方法与属性,缩减了APK包的大小; 4、混淆好处③ → 对字节码进行优化,移除无用指令,应用运行更快; 5、怎么混淆 → 主项目的 build.gradle 设置

2021-07-02 15:32:32 553

转载 撤销git reset

本文转自找回Git中丢失的Commit在使用Git的过程中,有时候会因为一些误操作,比如reset、rebase、merge等。特别是在Commit之后又执行了git reset --hard HEAD强制回滚本地记录以及文件到服务器版本,导致本地做的修改全部恢复到Git当前分支的服务器版本,同时自己的Commmit记录也消失了。碰到这种情况,不要慌,我们在Git上做的任何操作都只是在原来之前的操作上做修改,并且会被记录下来保存,也就是说无论你做了什么,对于Git来说都可以进行回滚操作。你现在看gi

2021-07-02 14:25:28 1932

转载 Android转场动画的前世今生

前一段时间做图片查看器的升级时,在打开图片查看器的时,找不到好的过渡方式。医生推荐了Android最新的Material Motion动画,虽然最终没有给我们的App安排,但给我学习Material Motion动画提供了一次契机。推荐给大家的学习资料:“官方教程和项目:《material-component-android》Android官方:《使用动画启动 Activity》我的Demo:https://github.com/mCyp/Hoo什么是转场动画?在学习动画的时候,

2021-07-02 11:06:11 282

转载 盘一下 Fragment 间的五种通信方式

今年 Google I/O 上介绍了 Jetpack 近期的更新内容,其中包括 Fragment 新增的 Result API 。本文借机盘点一下 Fragment 各种常见的通信方式。Fragment 间的通信可以借助以下几种方式实现:1、EventBus2、Activity(or Parent Fragment)3、ViewModel4、Result API1基于 EventBus 通信EventBus的优缺点都很突出。优点是限制...

2021-07-02 10:26:59 3652

转载 Android:关于AAB的知识点整理

2018年,google推出了aab技术。在此之后google发布通知:从 2021 年 8 月起,新应用需要使用 Android App Bundle 才能在 Google Play 中发布。这意味着以GP为主要平台的海外版本,都需要使用aab。那么什么是aab,和apk有什么不同呢?aab官方介绍:https://developer.android.com/guide/app-bundle简单地说aab就是一个带有很多分包数据的压缩包。它将一个apk拆分了多个小包,比如按CPU架构拆分,按语

2021-07-02 09:28:09 4610

转载 Android-Gradle详解

Android 构建系统非常灵活,可让你在不修改应用核心源代码文件的情况下执行自定义构建配置。本部分将介绍 Android 构建系统的工作原理,以及它如何帮助你对多个构建配置进行自定义和自动化处理。构建过程涉及许多将你的项目转换为 Android 应用程序包 (APK) 的工具和过程。构建过程非常灵活,因此了解一些幕后发生的事情很有用。下图为Android 应用模块的构建过程。Android 应用模块的构建过程(如上图所示)遵循以下一般步骤:1、编译器将你的源代码转换为 DEX(Dalv

2021-07-01 15:42:05 571

转载 Android混淆从入门到精通

简介作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。说在前面这里我们直接用Android Studio来说明如何进行混淆,Android Studio自身集成Java语言的ProGuard作为压缩,优化和混淆工

2021-07-01 15:26:47 270

转载 Android是如何管理内存的?

前言很高兴遇见你~内存优化一直是 Android 开发中的一个非常重要的话题,他直接影响着我们 app 的性能表现。但这个话题涉及到的内容很广且都偏向底层,让很多开发者望而却步。同时,内存优化更加偏向于“经验知识”,需要在实际项目中去应用来学习。因而本文并不想深入到底层去讲内存优化的原理,而是着眼于宏观,聊聊 android 是如何分配和管理内存、在内存不足的时候系统会如何处理以及会对用户造成什么样的影响。Android 应用基于 JVM 语言进行开发,虽然 google 根据移动设备特点开

2021-07-01 14:53:21 606

转载 Android优雅处理重复点击

一般手机上的 Android App,主要的交互方式是点击。用户在点击后,App 可能做出在页面内更新 UI、新开一个页面或者发起网络请求等操作。Android 系统本身没有对重复点击做处理,如果用户在短时间内多次点击,则可能出现新开多个页面或者重复发起网络请求等问题。因此,需要对重复点击有影响的地方,增加处理重复点击的代码。之前的处理方式之前在项目中使用的是 RxJava 的方案,利用第三方库 RxBinding 实现了防止重复点击:fun View.onSingleClick(inte

2021-07-01 14:40:36 158

转载 关于LeakCanary2.0你应该知道的知识点

作者:RicardoMJiang链接:https://juejin.cn/post/6968084138125590541前言LeakCanary是一个简单方便的内存泄漏检测框架,相信很多同学都用过,使用起来非常方便,它有以下几个特点1.不需要手动初始化2.可自动检测内存泄漏并通过通知报警3.不能用于线上那我们自然可以提出以下几个问题1.说一下LeakCanary检测内存泄漏的原理与基本流程2.LeakCanary是如何初始化的?3.说一下LeakCanary是如何查找内存泄

2021-07-01 09:11:51 278

转载 卡顿、ANR、死锁,线上如何监控?

作者:蓝师傅链接:https://juejin.cn/post/6973564044351373326一、前言最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、锁信息等,然而,这种方法有一定的局限性,并不是每次都奏效,很多时候是没有堆栈信息给你分析的,例如有些高版本设备需要root权限才能访问/data/anr/ 目录,或者是线上用户的反馈,只有一张ANR的截

2021-06-23 10:55:47 249

转载 你真的懂 Fragment 吗?—— AndroidX Fragment 核心原理分析

点赞关注,不再迷路,你的支持对我意义重大!???? Hi,我是丑丑。本文 GitHub · Android-NoteBook 已收录,这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub)前言Fragment 是一个历史悠久的组件,从 API 11 引入至今,已经成为 Android 开发中最常用的组件之一; 在这个专题里,我们将从「使用 & 核心原理 & 面试」三个层面来讨论 Fragment。如果能帮上忙,请务必点

2021-06-23 10:23:39 1885 1

转载 Fragment换装ViewPager2

作者:fundroid链接:https://juejin.cn/post/69482498547242762311开启ViewPager2之旅距离ViewPager2正式版的发布已经一年多了,目前ViewPager早已停止更新,官方鼓励使用ViewPager2替代。ViewPager2底层基于RecyclerView实现,因此可以获得RecyclerView带来的诸多收益: 抛弃传统的PagerAdapter,统一了Adapter的API。 ...

2021-04-21 09:16:57 498

转载 30个IDEA插件总有一款适合你

1.Translation翻译插件,现支持Google翻译、有道翻译。2. Free Mybatis plugin平时dao层找对应的xml时候需要很麻烦的去找,有了这个插件就不用了3. Lombok plugin有了这个插件就不用get set方法了4. activate-power-mode是一个装逼神器,敲代码的时候可以旋转跳跃不停歇 看图5. Properties to YAML Converter将Properties配置文件一键转换成YAML文件,很实用的..

2021-04-20 09:38:00 748 1

驾校班车查询

驾校班车apk查询应用,目前仅有北京远大驾校班车,如有需要,后续继续添加其他驾校班车查询信息

2013-10-17

Git常用命令

快捷命令设置 git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout git config --global alias.br branch git config --global alias.dc dcommit git config --global alias.rb rebase

2011-10-19

git使用简介

git和svn最大的差异在于git是分布式的管理方式而svn是集中式的管理方式。如果不习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念。下面介绍两种工具的工作流程(团队开发),通过阅读下面的工作流程,你将会很好的理解以上两个概念。

2011-10-19

QXDM工具使用指导书

高通很好的工具,可以分析很多网络监控,包括打电话、上网等资源的监控

2011-09-08

QXDM工具使用指导书

高通抓取log工具,十分有用的工具,可以监控打电话等操作,

2011-09-08

空空如也

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

TA关注的人

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