Framework & startActivity

  1. 理解 Instrumentation
  2. IPC 发生在何处?
  3. Activity 栈是如何管理的?
  4. 何处读取 manifest 中 Activity 节点的启动模式等配置
  5. 何处检测 Activity 是否在 manifest 注册?
  6. 为什么单独配置 taskAffinity 不会生效
  7. 理解 ClientTransactionItem 与 ActivityLifecycleItem
  8. 为什么不能在 Activity 的 onPause 方法中做耗时操作?
  9. activity 实例在何处创建?
  10. Launcher 中点击图标启动 App
  11. 理解 ActivityThread 与 ApplicationThread
  12. 如何启动一个未在 manifest 中注册的 Activity ?

Read More

Android 集成 FFmpeg (四) 轻松实现一个音视频编辑 App

在网上看到一篇关于 FFmpeg 的文章,讲的大概是基于 FFmpeg 实现了一个 App,支持视频拼图等强大炫酷的音视频编辑功能,其原理是在 Android 端集成 FFmpeg,通过命令方式调用 FFmpeg。

尽管在 Android 端集成命令方式调用并不复杂,但一个具有强大炫酷音视频编辑功能的 App 是有价值的。由此启发,并决定敲下 Android 集成 FFmpeg 系列的第四篇,以一个实际应用的方式展现 FFmpeg 强大的音视频编辑功能。

Read More

Android OpenGL ES(二)绘制三角形

通过上篇文章的学习,现在已经了解到,要想在 Android 端使用 OpenGL ES 绘制图形,必须创建 OpenGL ES 环境和视图窗口,具体来说就是构建 EGL 环境,即 OpenGL ES 和 Android 底层平台视窗系统之间的接口。另外 OpenGL ES 2.0 版本为可编程管线,我们就可以编写着色器程序来确定绘制内容,即编写 Vertex Shader 顶点着色器和 Fragment Shader 片元着色器。

而这些工作可以通过 GLSurfaceView 非常简单的实现。

Read More

Android 知识简记

网络:分层模型、TCP、UDP、HTTP、HTTPS
算法:数据结构、常用算法
Java 基础:StringBuilder、泛型擦除、Exception、IO、容器
Java 同步:volatile、wait、synchronized、可重入锁、乐观锁、死锁
Java 设计模式:六大原则、23 种设计模式、动态代理
Java 虚拟机:内存模型、内存结构、GC、四种引用、ClassLoader
Android 基础:Activity、View 绘制、动画、Window、SurfaceView、事件分发
Android 通信:Handler、Parcelable、IPC、Binder
Android 系统:系统架构、Dalvik、ART、系统启动、类加载器、Apk 打包、Apk 安装
Android 优化:网络优化、卡顿优化、内存优化、瘦包、内存泄漏、ANR、Native Crash
其他:解析 XML、进程保活、播放器、Lint、CI、CD、AOP、JetPack

Read More

对 Android 开发的一点思考

最初的时候,你是否是一个完美主义者,不容忍任何一点 warning 与叹号,if 必有 else,switch 必有 default,即使 else 和 default 中确实什么也不用处理,你也会添加一个 //do nothing 注释,表示这里的逻辑是经过充分考虑的,下次阅读程序时,告诉别人也告诉自己,这里的确什么也不用处理,可以快速跳过。

Read More

一个轻量的 Android 端日志打印记录库

地址:https://github.com/yhaolpz/PLog

PLog 即 Persistence Log,可持久化日志于文件,便于还原用户使用场景,解决异常问题。

特性:

1.mmap 方式高效写入,规避 IO 操作带来的性能消耗

2.兼容多进程并发文件写入,日志文件保存在各自的进程目录下

3.通过 zip 压缩并加密,节省上报流量,保护日志私密性

4.内置收集 Activity/Fragment 生命周期、崩溃、网络状态等常用信息:

Read More