自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蒋东国的博客

拥抱 爱(AI)!

原创 2020,远征 ● 起航!(目录)

 最近一段时间抽空对之前积累的一些知识点进行了总结、扩展,为了更便捷地查阅与相关知识点对应的文章,本文对本博客的现有的所有文章进行了归纳、汇总。具体章节如下: 1. Android源码分析 1. 从Android源码的角度剖析UI界面架构 2. 从Android源码的角度剖析View的绘制原...

2019-12-31 20:40:38

阅读数 1293

评论数 1

原创 Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库

AndroidUSBCamera基于[saki4510t/UVCCamera](https://github.com/saki4510t/UVCCamera)开发,该项目对USB Camera(UVC设备)的使用和视频数据采集进行了高度封装,能够帮助开发者通过几个简单的API实现USB Camer...

2017-10-23 22:22:09

阅读数 34158

评论数 631

原创 探讨Android6.0及以上系统APP常驻内存(保活)实现-复活篇

随着AlarmManager唤醒、native进程拉起等方式的失效,APP常驻内存的时代将不复存在,尤其是当APP进程被杀死后,基本很难将其拉起。从用户的角度来讲,这是一种很好的发展,而这一切应该归功于谷歌和各大厂商不断追求良好的用户体验;从开发者的角度来说,尤其是即时通信类应用,这将是毁灭性打击...

2017-07-15 17:02:42

阅读数 19202

评论数 19

原创 探讨Android6.0及以上系统APP常驻内存(保活)实现-争宠篇

APP常驻内存(保活),旧事重提,距离上一次的研究亦有半年有余。最近,用户反馈说多进程守护方案在华为Mate8(7.0)保活效果不是很好,有时候还是不能及时收到消息,于是,又带着怀疑的眼光,重新找回原来的代码进行测试,顺便分析了市场上主流运动类APP保活方法(微信、手Q就算了,富人家的孩子,不具代...

2017-07-13 11:36:28

阅读数 27320

评论数 63

原创 探讨一种新型的双进程守护应用保活

在高版本Android系统中,应用能否常驻内存,我想一直以来都是某些APP头疼的事情。虽然APP常驻内存对于用户来说比较”恶心”,但是在一些特殊情况来说,APP的常驻内存却有尤其重要,很多时候用户也会要求APP能够保证长久运行。因此,这里只研究APP应用在一些特殊场合的保活方法,内容仅供参考。

2016-12-06 11:53:18

阅读数 15524

评论数 50

原创 内存泄漏分析框架LeakCanary的使用与原理解析

文章目录1. 常见内存泄漏1.1 “单例模式” 造成的内存泄漏1.2 “静态实例” 造成内存泄漏1.3 “Handler” 造成的内存泄漏1.4 “线程” 造成的内存泄漏1.5 “使用WebView” 造成的内存泄漏2. LeakCanary使用与原理解析2.1 LeakCanary使用方法2.2...

2020-01-12 21:52:16

阅读数 1130

评论数 0

原创 Android性能优化(6):浅析类加载机制与热修复技术

文章目录1. 类加载与反射1.1 类加载机制1.1.1 类加载器1.1.1.1 Java中的ClassLoader1.1.1.2 Android中的ClassLoader1.1.2 双亲委托模式1.1.3 ClassLoader的加载过程1.1.4 类的链接1.1.5 类的初始化1.2 Java...

2019-12-29 18:20:29

阅读数 1056

评论数 1

原创 依赖注入框架ButterKnife的使用与原理解析

文章目录1. 注解与依赖注入1.1 注解1.1.1 注解分类1.1.2 注解处理器1.2 依赖注入2. ButterKnife框架2.1 ButterKnife的基本使用2.2 ButterKnife原理解析2.2.1 创建各类注解类2.2.2 ButterKnife的注解处理器2.2.3 But...

2019-12-27 15:50:37

阅读数 903

评论数 0

原创 事件总线框架EventBus的使用与原理解析

文章目录1. EventBus框架1.1 EventBus简介1.2 EventBus基本使用1.2.1 添加Gradle依赖1.2.2 定义事件1.2.3 准备订阅者1.2.4 发布事件2. EventBus原理解析2.1 订阅者注册过程2.2 订阅者注销过程2.3 事件发布过程3. Event...

2019-12-21 16:47:36

阅读数 3172

评论数 0

原创 从Android 8.0源码的角度剖析APP的启动过程

文章目录1. 应用进程启动过程1.1 AMS向Zygote进程发起请求1.2 Zygote进程接受请求2. Activity启动过程2.1 应用程序的Appication启动过程2.2 应用程序的根Activity启动过程 在从Android 8.0源码的角度剖析Android系统启动过程(2)...

2019-12-14 02:20:32

阅读数 3393

评论数 5

原创 Android性能优化(5):APK瘦身优化

文章目录1. APK文件结构2. APK瘦身优化2.1 优化dex文件大小2.1.1 Proguard2.1.2 AndResGuard2.2 优化资源文件大小2.2.1 Android Lint2.2.2 [tinypng](http://leonshi.com/2015/11/02/tinyp...

2019-12-10 21:49:01

阅读数 611

评论数 0

原创 从Android 8.0源码的角度剖析Android系统启动过程(2)

文章目录1. SystemServer进程1.1 启动Binder线程池1.2 启动系统服务1.2.1 启动Bootstrap(引导)服务1.2.2 启动Core(核心)服务1.2.3 启动Other(其他)服务2. Launcher进程 在从Android 8.0源码的角度剖析Android系...

2019-12-06 23:36:11

阅读数 519

评论数 0

原创 从Android 8.0源码的角度剖析Android系统启动过程(1)

文章目录1. init进程启动过程1.1 解析init.rc文件1.2 启动Zygote进程2. Zygote进程启动过程2.1 启动SystemServer进程2.2 创建Zygote进程的Server socket  在《嵌入式Linux应用开发完全手册》一书中,我们可以较为清晰地了解到And...

2019-12-05 10:27:33

阅读数 595

评论数 0

原创 从Android 8.0源码的角度剖析APK打包、安装过程

文章目录1. APK打包过程1.1 APK文件结构1.2 APK打包过程2. APK安装过程2.1 拷贝APK2.2 解析APK  APK,全称Android Application Package,即Android应用程序包,是Android系统使用的一种应用程序包文件格式,它的作用是将Andr...

2019-11-29 22:22:56

阅读数 434

评论数 0

原创 Android直播开发之旅(18):FFmpeg中滤镜(filter)的工作原理

文章目录1. 什么是滤镜1.1 简单滤镜(滤镜链)1.2 复杂滤镜(滤镜图)2. 滤镜API介绍与使用2.1 滤镜API介绍2.1.1 结构体2.1.2 功能函数2.2 滤镜API的使用2.2.1 配置滤镜图2.2.2 使用滤镜图 1. 什么是滤镜  滤镜(filter)是指将未经过处理的原...

2019-11-21 14:54:36

阅读数 681

评论数 1

原创 Android性能优化(4):UI渲染机制以及优化

文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从An...

2019-11-20 09:38:34

阅读数 613

评论数 1

原创 Android性能优化(2):常见内存泄漏与优化(二)

文章目录1. Android虚拟机:Dalvik和ART1.1 JVM与Dalvik区别1.2 Dalvik与ART区别1.3 Dalvik/ART的启动流程2. 常见内存分析工具2.1 Android Profiler2.1.1 Allocation Tracker2.1.2 Heap Dump...

2019-11-07 16:20:20

阅读数 511

评论数 6

原创 Android直播开发之旅(17):使用FFmpeg提取MP4中的H264和AAC

最近在开发中遇到了一个问题,即无法提取到MP4中H264流的关键帧进行处理,且保存到本地的AAC音频也无法正常播放。经过调试分析发现,这是由于解封装MP4得到的H264和AAC是ES流,它们缺失解码时必要的起始码/SPS/PPS和adts头。虽说在Android直播开发之旅(3):AAC编码格式分...

2019-10-21 15:55:44

阅读数 1499

评论数 0

原创 Android性能优化(1):常见内存泄漏与优化(一)

 a众所周知,Java因其拥有独特的虚拟机(JVM)设计,使其成为一门跨平台、内存自动管理的高级开发语言。所谓跨平台,即"一次编译,多次运行",从而解决了不同平台由于编译器不同导致无法运行问题;所谓内存自动管理,即Java不像C/C++那样需要开发者来分配、释放内存,它拥有一套...

2019-10-09 18:01:47

阅读数 436

评论数 0

原创 Android直播开发之旅(16):使用FFmpeg保存网络流到本地文件

在Amdroid直播开发之旅(5):详解ffmpeg编译与在Android平台上的移植和Android直播开发之旅(12):初探FFmpeg开源框架文章中,我们分别探讨了FFmpeg的编译移植、FFmpeg框架和相关重要结构体。本文就在此基础上,将详细阐述FFmpeg的裁剪移植,以便剔除不必要的功...

2019-09-27 15:27:19

阅读数 452

评论数 0

原创 从Android 6.0源码的角度剖析View的绘制原理

在从Android 6.0源码的角度剖析Activity的启动过程和从Android 6.0源码的角度剖析Window内部机制原理的文章中,我们分别详细地阐述了一个界面(Activity)从启动到显示的整个流程和View是如何添加到Activity的Window中的。本文就在上述两篇文章基础上,从...

2019-09-03 15:35:01

阅读数 775

评论数 0

原创 Android直播开发之旅(15):libjpeg库的编译移植与使用

1. libjpeg介绍  libJPEG库是一款功能强大的JPEG图像处理开源库,它支持将图像数据压缩编码为JPEG格式和对原有的JPEG图像解压缩,Android系统底层处理图片压缩就是用得libJPEG库。但有一点需要注意的是,为了适配低版本的Android手机,Android系统在内部的压...

2019-08-28 17:41:07

阅读数 410

评论数 0

原创 Android直播开发之旅(14):使用RC4算法加解密音视频流

1. RC4算法简介与原理  RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法族,它是一种面向字节操作的对称加密算法,且属于对称密码算法中的序列密码(streamcipher,也称为流密码)。RC4算法采用的是输出反馈(OFB,oupt-feedback)工作方式,该...

2019-08-26 11:40:45

阅读数 329

评论数 0

原创 从Android 6.0源码的角度剖析View的事件分发机制

请尊重原创,转载请声明出处: 在从Android 6.0源码的角度剖析UI界面架构一文中,我们了解到Activity是Android的可视化界面,是用户与Android系统交互的窗口,也就是说每个Activity都对应着一个窗体,但窗体是一个抽象的概念,它的具体表现形式是视图。在Android中...

2019-08-15 17:47:50

阅读数 288

评论数 0

原创 Docker入门指南(1):Docker简介与原理

 Docker是基于Go语言实现的云开源项目,它的主要目标是“Build,Ship and Run Any APP,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以使一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。D...

2019-07-21 18:47:53

阅读数 336

评论数 0

原创 Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2....

2019-06-19 10:00:53

阅读数 4028

评论数 29

原创 中文NLP技术学习(1):搭建NLP开发环境

 中文NLP技术学习系列文章,将以NLTK系统为主体框架,通过整合相关的开源系统来学习NLP中涉及的所有模块。下面是我的PC环境: win10 64bits python 3.6.8+pip+virtualenv PyCharm 2018.3.5 (Professional Edition) ...

2019-05-07 10:25:11

阅读数 567

评论数 0

原创 从Android6.0源码的角度剖析Service启动过程

Service是Android四大组件之一,与Activity的可视化界面相反,Service没有向用户提供交互界面,因此常被用于执行后台任务。Service的启动方式有两种:普通启动和绑定启动,其中,前者通过Context.startService方法启动,常用于执行普通的后台任务;后者通过C...

2019-02-23 15:40:01

阅读数 383

评论数 0

原创 从Android6.0源码的角度剖析Binder工作原理

在从Android 6.0源码的角度剖析Activity的启动过程一文中,我们了解到Activity的启动过程最终由系统服务ActivityManagerService完成,ActivityManagerServer是继承于Binder且运行在系统进程中,Activity的启动实质是一次基于Bin...

2019-02-11 12:16:07

阅读数 587

评论数 0

原创 Android USB开发小结:host模式与accessory模式

很早之前就想对Android USB的两种模式作个小结,但是一直没有空去搞,毕竟USB这块应该属于冷门方向,并且应用层能够做的比较少也很简单。最近刚好在做大疆无人机的二次开发,想着对USB连接检测这块做下优化,毕竟Android终端主要是通过USB连接到远程控制器来与无人机进行交互。但与And...

2018-12-27 22:15:59

阅读数 2954

评论数 3

原创 Android直播开发之旅(13):使用FFmpeg+OpenSL ES播放PCM音频

在Android直播开发之旅(12):初探FFmpeg开源框架一文中,我们详细介绍了FFmpeg框架的架构、音视频相关术语以及重要的结构体。为了能够对这些重要的结构体有个深入的理解,本文将在此基础上,利用FFmpeg解析rtsp数据流以获取AAC音频数据,再对AAC进行解码为PCM,然后结合Ope...

2018-12-25 22:37:05

阅读数 860

评论数 0

原创 从Android6.0源码的角度剖析Handler消息机制原理

■ 文  蒋东国 ActivityThread通过ApplicationThread和AMS进行进程间通信,AMS以进程间通信的方式完成ActivityThread的请求后回调ApplicationThread中的Binder方法,然后ApplicationThread会向H发送消息,H收...

2018-11-13 22:13:30

阅读数 1161

评论数 0

原创 Android直播开发之旅(12):初探FFmpeg开源框架

1. FFmpeg介绍与裁剪 1.1 FFmpeg简介  FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案,它提供了录制/音视频编解码、转换以及流化音视频的完整解决方案。ffmpeg4.0.2源码目录结构如下: 目录说明: FFmp...

2018-11-08 21:40:26

阅读数 877

评论数 0

原创 Android NDK开发之旅(6):JNI函数完全解析与项目实战

**对于基本类型而言,JNI与Java之间的映射是一对一的,比如Java中的int类型直接对应于C/C++中的jint;而对引用类型的处理却是不同的,JNI把Java中的对象当作一个C指针传递到本地函数中,这个指针指向JVM中的内部数据结构,而内部数据结构在内存中的存储方式是不可见的,本地代码必须...

2018-10-25 23:23:25

阅读数 860

评论数 2

原创 Android NDK开发之旅(5):Android Studio中使用CMake进行NDK/JNI开发(高级)

转载请声明出处:https://blog.csdn.net/AndrExpert/article/details/82909572 在Android Studio中使用CMake进行NDK/JNI开发(初级)一文中,我们详细介绍了如何在Android Studio中使用cmake编译环境开发...

2018-10-09 11:38:57

阅读数 537

评论数 0

原创 Android直播开发之旅(11):从内存分布的角度再谈YUV颜色空间

最近在研究各种视频采集设备的视频传输,在这过程中也遇到了各种问题,尤其是由于设备之间的差异,导致YUV转换不匹配出现了蓝屏或花屏。虽然在 1. YUV存储格式与采样 1.1 YUV存储格式 packed格式:YUV分量存放在同一个数组; planner格式:使用三个数组分...

2018-08-24 22:36:49

阅读数 640

评论数 0

原创 从Android 6.0源码的角度剖析Activity的启动过程

转载请声明出处: https://blog.csdn.net/AndrExpert/article/details/81488503 在从Android 6.0源码的角度剖析Window内部机制原理文章中,我们详细剖析了Android Window的内部工作机制,了解到每一个Activit...

2018-08-11 13:36:17

阅读数 782

评论数 0

原创 从Android 6.0源码的角度剖析Window内部机制原理

转载请声明出处: 1. Window内部机制原理  WindowManager是用于与Window管理器交互的接口,它继承于接口ViewManager,可通过Context.getSystemService(Context.WINDOW_SERVICE)方式获取WindowMa...

2018-08-04 21:32:47

阅读数 547

评论数 0

原创 从Android 6.0源码的角度剖析UI界面架构

大多数多

2018-07-30 23:26:15

阅读数 733

评论数 0

原创 OpenCV4Android开发实录(6):形态学滤波

转载请注明出处: 前言 1. 腐蚀与膨胀 2. 开运算、闭运算、形态学梯度

2018-06-08 18:04:14

阅读数 1204

评论数 0

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