- 博客(361)
- 资源 (41)
- 问答 (1)
- 收藏
- 关注
原创 App性能优化——内存、CPU、耗电、启动时间指标获取分析
考虑到既然是优化性能,那首先要获取App的相关性能指标,比如: 内存占用、CPU利用率、App启动时间、App耗电量等情况,获取以上各指标后,才能针对性分析确定是否存在优化的可能。
2021-06-15 09:17:14 5238 4
原创 一文读懂 微内核
2019年8月9日华为 余承东 发布HarmonyOS 1.0,HarmonyOS的发布将一个计算机领域内非常专业的词带到了广大公众的视线内,这就是 微内核 。
2021-05-14 18:46:38 1928
原创 一文了解 APK瘦身属性android:extractNativeLibs
android:extractNativeLibs属性瘦身APK先描述一下结论:android:extractNativeLibs = true时,gradle打包时会对工程中的so库进行压缩,最终生成apk包的体积会减小。但用户在手机端进行apk安装时,系统会对压缩后的so库进行解压,从而造成用户安装apk的时间变长。关于android:extractNativeLibs默认值设定方面,若开发人员未对android:extractNativeLibs进行特殊配置:minSdkVersion &
2021-03-26 18:54:14 3320 4
原创 Android R(Android 11 API 30) 新特性分析及适配指南
Android R(Android 11 API 30)于2020年9月9日正式发布,随国内各终端厂商在售Android设备的版本更新升级,应用软件对Android R 版本的兼容适配已迫在眉睫。
2021-03-12 15:23:52 5683 1
原创 一文读懂 URLEncode:URL编码原理解析
使用浏览器进行Http网络请求时,若请求query中包含中文,中文会被编码为 `%+16进制+16进制`形式,但你真的深入了解过,为什么要进行这种转义编码吗?编码的原理又是什么?
2021-02-23 20:58:26 7255
原创 一文读懂GBA认证流程:移动终端认证和网络安全连接的保障
GBA(Generic Bootstrapping Architecture)是一种用户认证机制,目前多用于运营商相关业务。在数据相关业务中,客户端与应用服务器(NAF)交互过程时,进行用户认证鉴权。`应用服务器NAF`与`基于SIM卡的终端设备应用`之间建立共享的`用户秘钥(Ks_NAF)`,并利用该共享秘钥实现用户认证,即GBA。
2020-12-21 22:32:36 6934 3
原创 一文读懂 HTTPS :HTTPS握手与TLS证书链校验
HTTPS协议详解从事移动互联网软件开发的小伙伴肯定了解:自Android 9.0开始,应用程序的网络请求默认使用https;基本是同期苹果IOS在应用网络请求方面,也强制使用https禁止http。这一期间如果你去面试,不了解Https的握手过程,都不好意思讲工资。本人一个普通程序员,项目期间工期紧张,并未抽出时间详细了解Https网络请求过程中TLS握手过程,因此这件事一直在我的待办记录中…这篇文章以Wireshark抓包,详细了解Https请求中TLS的握手过程 与 客户端证书校验过程。H
2020-06-23 17:09:01 1992
原创 一文详解 ArrayDeque 双端队列使用及实现原理
deque(double-ended queue)双端队列,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
2020-06-04 14:51:07 1317 1
原创 一文详解 TCP与UDP协议:深度解析与场景应用
本文要介绍的TCP与UDP协议是TCP/IP 协议簇的核心成员,而TCP/IP协议簇是 Internet 的基础,也是一系列网络协议的总称。如:TCP、UDP、IP、FTP、HTTP、ICMP、SMTP等都属于TCP/IP协议族内的协议。这些协议在计算机网络中自上而下被划分为四层:应用层、传输层、网络层和链路层。
2020-05-19 21:23:53 3556 3
原创 一文详解 常见开源协议
日常从Github拷贝代码过程中,也要抽空了解一下,我们拷贝的代码在商用上是否存在风险。版权保护方面,虽然相关法规尚有待完善,但在研发商用软件过程中,作为软件开发者还是很有必要了解一下,我们平时使用的`开源组件/框架`都涉及到了哪些开源协议,以避免今后的法律风险。
2020-05-15 10:58:04 2057 2
原创 一文详解SDP协议:多媒体会话参数与媒体流描述协议
SDP用于在互联网上传输多媒体会话的配置信息,常见于音视频、实时通信会话等。SDP协议提供一种灵活且可扩展的机制,通过在会话的参与者之间交换和传递SDP会话描述信息,实现多媒体会话参数与配置的协商和管理。这种机制为多媒体会话的协商与管理提供了完备的解决方案。
2020-03-07 22:16:29 4910 1
原创 一文详解CPIM协议:IM服务网关互联互通的桥梁
CPIM (Common Presence and Instant Messaging) 是一种应用于不同IM即时通信协议中,规范与描述消息体内容的通用消息格式,其消息格式由 RFC3862 规范 。CPIM消息体格式的定义是为了实现不同即时通讯协议之间的互操作性,让不同的即时通讯协议服务之间可以互联理解和互相交流。
2020-03-07 17:17:21 3990
原创 一文读懂 SIP 协议:构建现代通信的基石
SIP是由IETF制定的多媒体通信协议。广泛应用于CS、NGN以及IMS的网络中,可以支持并应用于 语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。可以说,有IP网络的地方就有SIP协议的存在。`SIP是类似于HTTP`,SIP可以减少应用特别是高级应用的开发时间。由于`基于IP协议的SIP利用了IP网络`,固定网运营商也会逐渐认识到SIP技术对于他们的远意义。
2020-03-04 20:11:27 11050 1
原创 一文读懂 HTTP 协议:报文结构及网络数据包举例
HTTP(HyperText Transfer Protocol)超文本传输协议。其`最初的设计目的是为了提供一种发布和接收HTML页面的方法`。HTTP是一个`客户端(用户)`和`服务端`之间请求和应答的标准。
2020-02-27 17:55:40 3693
原创 一文详解 Android状态机StateMachine 使用方式及实现原理
`StateMachine`不是`Android SDK`中的相关API,是存在于`frameworks`层源码中的一个Java类。通过这篇文章探究一下其使用方式以及实现原理。
2020-02-22 16:20:56 6985 2
原创 一文分析 mp4对比m3u8 第一帧加载慢的原因
公司要求对视频的 秒开率(1秒内成功加载的播放数 / 播放总数)、失败率 (播放失败的次数 / 播放总数) 等进行优化。经过线上AB测试发现,`m3u8视频(第一段切片为1~3秒)`在秒开率、失败率等性能指标上均优于`普通mp4视频`。这里探究一下,m3u8视频(第一段切片为1~3秒) 在秒开率上均优于 普通mp4视频 的原因。
2019-12-03 16:41:28 7338
原创 一文详解微信视频通话、抖音视频回显实现方案
2014年曾经做过一款类似当今“抖音”的短视频软件,叫“魔力秀”。可以说和现在的抖音基本是一样的,但因为“魔力秀”出生过早,加上投资人不看好,注定无法成长为一棵参天大树,最终只发了一个版本就结束了。当时“魔力秀App”的视频回显模块是我设计实现的,所以就有了这篇文章。事过多年,将这篇文章拿出来整理,因为这项技术依然不过时,反而被广泛应用...
2019-11-30 19:43:20 1330
原创 Android Q(Android 10 API 29)新特性及适配指南
在Android 10开始版本中,官方的改动较大,相应的开发者适配成本还是很高的。这里按照`2019.11.11 google android q workshop`流程,大概说明一下Android Q适配需要注意的内容。虽然是大概介绍,但应该是目前最全的适配攻略了...
2019-11-18 16:47:26 3381 1
原创 Android Q 深色主题
从Support Library 23.2.0 开始,AppCompat 新增了主题:`Theme.AppCompat.DayNight`。其允许APP在 `深色主题` 和 `亮色主题` 之间切换;可以大幅减少耗电量(`OLED显示屏`的设备上,`深色主题`较`亮色主题` 有更加持久的续航能力);改善弱视以及对强光敏感的用户的可视性;让所有人都可以在光线较暗的环境中更轻松地使用设备,从而提升用户体验。
2019-10-23 21:38:53 3588 3
原创 一文详解 NanoHttpd 微型服务器原理
`NanoHttpd`仅有一个Java文件的微型Http服务器实现。其方便嵌入式设备(例如:Android设备)中启动一个本地服务器,接收客户端本地部分请求;应用场景也非常广泛,例如:本地代理方式播放m3u8视频、本地代理方式加载一些加密秘钥等。
2019-08-29 16:51:47 1708
原创 一文详解 m3u8视频格式与视频秒开优化
秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。
2019-04-11 14:25:33 16046
原创 一文分析 Only fullscreen opaque activities can request orientation 报错原因及解决方案
今天在三星S8上遇见一个奇葩问题`Only fullscreen opaque activities can request orientation`,探究一下Android源码,出现这个错误的原因,以及解决方案。
2019-03-29 15:28:38 2918
原创 How to handle background services in ANDROID O?
How to handle background services in ANDROID O?如何处理Android O的后台Service前段时间公司项目中做Android O的适配。在了解Android O新功能时,看到这个文章,虽然介绍的是Android O的预览版,但读了一遍感觉不错,记录下来。顺便翻译一下(不翻译大家肯定也看得懂,只是觉得单纯转一下太low了)…原文地址:How ...
2018-10-29 11:41:49 817
原创 一文详解 RSA 非对称加密算法
非对称加密算法指的是 加、解密使用不同的密钥,一把为公开的公钥,另一把为私钥。 公钥加密的内容只能由私钥进行解密,反之由私钥加密的内容只能由公钥进行解密。也就是说,这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容只能由对方进行解密。
2018-10-17 17:49:28 3330 9
原创 一文详解 Android multidex 使用方式及实现原理
在Android中一个Dex文件最多存储65536个方法,也就是一个short类型的范围。但随着应用方法数量的不断增加,当Dex文件突破65536方法数量时,打包时就会抛出异常。为解决该问题,Android5.0时Google推出了官方解决方案:MultiDex。
2018-10-16 15:55:52 33486 2
原创 一文详解 ThreadLocal使用方式及实现原理
`ThreadLocal` 的作用与`volatile` 有些相反。`volatile`是为了保证多线程环境下数据的一致性;`ThreadLocal` 是保证了多线程环境下数据的独立性;
2018-09-26 17:44:31 406
原创 一文详解 Android asynctask使用方式(一)
AsyncTask在各版本中源码的实现方式不用,但有时我们又需要用到AsyncTask,那我们该怎么使用它呢?
2018-08-28 14:08:35 568
原创 一文了解 Android MediaPlayer buffer大小
前几天用`VideoView` (`MediaPlayer+SurfaceView`) 做一个类似于**抖音APP**的短视频Demo(**测试机型 Android8.0 小米6**),发现`MediaPlayer onPrepared`的时间非常长,好像把一个不到10M的视频全部缓存结束后,才回调`onPrepared`,开始视频播放。因此:学习一下MediaPlayer的buffer大小到底是多少;
2018-07-18 16:24:36 5183 1
原创 一文分析 BottomSheetDialogFragment使用方式及实现原理
分析 BottomSheetDialogFragment 使用方式及实现原理
2018-07-10 10:04:47 11956
原创 一文详解 RxJava2 使用及实现原理
RxJava—一个可以在JVM上运行的,基于观察者模式 实现异步操作的java库。其英文描述为:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java
2018-06-19 18:38:31 2818
原创 ARouter 源码学习
ARouter 源码学习官方文档: Android平台页面路由框架ARouter阿里巴巴Arouter github地址如下: ARouter gitHub 地址ARouter我的学习注释GitHub地址: ARouterArouter 组件化Demo: Android_Modularization_Demo强烈建议:阅读ARouter源码前,认真阅读 ARouter官...
2018-04-10 17:32:59 912
原创 一文详解 JsBridge 实现原理
JsBridge主要用于“JS与Native的通信”,众所周知Android 4.2以下的WebView存在addJavascriptInterface漏洞的问题,为解决这一问题国内很多知名大厂很早就在各自项目中集成了JsBridge。
2018-03-07 11:41:41 1733
原创 一文了解 Android Binder通信机制
Binder通信基础是Kernel的内存共享一个进程空间分为 `用户空间` & `内核空间(Kernel)`,即把进程内 `用户 & 内核` 隔离开来 。进程间,`用户空间的数据不可共享`。进程间,`内核空间的数据可共享`。`进程内 用户 与 内核 进行交互` ,Linux可使用`copy_from_user()`和`copy_to_user()`实现这两个跨空间拷贝,但Binder使用的方式又有所不同(后边会说道)。
2018-03-02 15:14:22 1243
原创 小团队Git分支管理
Android 客户端小团队Git管理前两天测试组同学问我,公司Android客户端5人小Team的Git版本是怎么管理的。想了想要不画一个时序图吧。Created with Raphaël 2.1.2MasterMasterDevDevFeature1Feature1Feature2Feature2HotFixHotFixMaster最新版本Tag为V5.0V5.1开发开始Maste...
2018-02-27 10:34:05 1002 1
原创 一文详解 Http 短轮询、长轮询
早期的很多网站为具备数据推送能力,所在用的技术基本都是`HTTP轮询`。轮询是由由客户端每隔一段时间(如每隔5s)向服务器发出HTTP请求,服务端接收到请求后向客户端返回最新的数据。客户端的轮询方式一般为`短轮询`或`长轮询`。...
2018-01-09 12:04:44 6158 4
原创 一文详解 SparseArray、ArrayMap 实现原理
SparseArray与ArrayMap是Android提供的两个列表数据结构。SparseArray相比于HashMap采用的是,时间换取空间的方式来提高手机App的运行效率。而ArrayMap实现原理上也类似于SparseArray。
2017-08-16 19:33:26 2431
原创 Android内存占用——使用MAT、GIMP分析内存异常占用
Android开发时,面对内存的异常升高,我们使用MAT(Memory Analyzer Tool)分析Android内存时,可以发现大量的bitmap内存占用,但是很难定位究竟是哪张图片占用了内存,这里介绍一种查看bitmap的方法。
2017-08-15 18:09:26 1481
原创 一文学会 公开课3D勋章实现方案
opengl es 2.0中加载.obj 与 .mtl本来以为网上应该有兼容性较好的obj与mtl的java解析库,但在网上找了好多代码,发现其在加载obj与mtl中,基本都存在较大问题。网上代码主要分为了以下几个部分:mind3d 2011年就已停止维护(为opengl es1.0),并且在加载多图形上存在很大的不兼容(主要解析了obj,mtl没有解析)。其他一些obj解析代码,基本都是解析了
2017-08-10 13:37:44 5039 12
原创 一文详解 .obj 和 .mtl文件格式
obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。
2017-08-08 12:12:47 9590 2
Android端 网易公开课3D动画勋章 实现源码
2021-11-02
SIMalliance_OpenMobileAPI2_02.rar
2021-07-30
capture.pcap
2020-06-12
SIP-RFC3428.doc
2020-03-07
ES_001_Triangle
2015-11-14
Gson简单与复杂json数据解析案例
2014-11-26
完善程序地图poi搜索
2014-11-26
Android_surfaceView与layout屏幕适配总结
2014-10-27
shader中uniform变量的if或for会降低帧率
2014-10-27
Xml本地格式化工具(Java代码显示,图形操作)
2014-08-10
Android用SAX2解析xml
2014-08-07
android静默卸载data/app下的应用程序
2014-07-03
android静默卸载指定包名APP
2014-07-02
百度地图附近商铺信息
2014-05-20
png转pkm“Mali-Texture-Compression-Tool-v4Windows-x64”和“pkm.zip”资源
2024-08-13
OpenGLES2.0中加载".pkm图片资源"组成的“zip压缩包”,并以帧动画的渲染播放ETC1格式纹理数据
2024-08-08
Android工程OpenGL ES中YUV420转化RGB工程实现源码
2024-07-22
ExternalOES纹理数据 转换为 TEXTURE-2D纹理数据 工程代码
2023-12-21
OpenGLES渲染播放Sdcard中的视频资源
2023-11-02
Android平台OpenGLES3将GL-TEXTURE-2D纹理id渲染到ImageReader提供的Surface上
2023-06-28
监听Android系统软键盘的弹出与关闭(案例代码)
2023-06-20
TCP与TLS数据报文抓包
2023-03-18
Android使用 jitpack 发布 maven 多渠道AAR依赖库 案例实现
2023-02-21
Android录制屏幕生成mp4文件
2022-07-07
Python3使用openpyxl、xlrd依赖库操作Excel案例源码
2022-04-15
Python3使用xlrd修改Excel数据映射关系
2022-04-01
Android12 SplashScreen使用案例代码下载
2022-03-16
安卓Kotlin Coroutine协程使用案例代码
2022-03-09
Android veridex 非SDK接口检测工具
2022-02-16
Android平台 使用OpenGLES3.0实现纹理纹理、颜色混合
2021-12-15
Android平台 OpenGL ES3.0绘制点、线、三角形实现源码
2021-12-10
Android平台OpenGLES生成使用Mipmap纹理
2021-12-08
OpenGLES三种抗锯齿实现案例
2021-12-06
Android使用MediaCodeC与OpenGL硬解码 录制mp4音视频实现源码
2021-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人