boybeak
boybeak

热爱技术,记录生活

Intent.FLAG_ACTIVITY_***解密

最好先看这一篇[Launch Mode](/android/LaunchMode.html)。 我们将重点针对FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TASK、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_SINGLE_TOP四个flag进行讲解。 FLAG_ACTIVITY_NEW_TASK: 通过...

Android技巧 #Android

发布Android库到MavenCentral教程

JCenter已经宣布,即将在2020年5月1日,停止新的库的提交,在2022年2月21号以前,连库的解析服务也停止,所以,把以前的库或者未来的新库替换到MavenCentral是当务之急了。 我参考的教程来自以下两篇文章: Publishing your first Android library to MavenCentral Android库发布到Maven Central全攻略 Demo项...

发布Android库到MavenCentral教程
Android技巧 #Android

LaunchMode

此文是阅读《Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?》一文后的总结,视频地址Bilibili、Youtube。 演示代码: 在正式讲解launchMode前,先要理解三个概念:ActivityStack, TaskRecord, ActivityRecord。 graph LR; style TaskRecord-A fill:#aaddff; style Tas...

Android技巧 #Android

Binder机制分析

参考文章:写给 Android 应用工程师的 Binder 原理剖析 实验代码:TheBinder Binder机制可以说是Android的核心。提到Binder,可能会让你想到,通过bindService与Service进行通信(也可能是跨进程的通信),实际上,Android中Binder的使用可以说是无处不在的,包括Activity跳转,详情可以参考AMS启动流程。 为什么要用Binder?在...

Binder机制分析
Android技巧 #Android

ASM库介绍与使用

原文 前面几篇文章介绍了 .class 文件的结构、JVM 如何加载 .class 文件、JVM 中如何执行方法的调用和访问者模式,其实前面几篇文章都是为这篇文章做铺垫的,如果不知道 .class 文件结构、也不知道在 JVM 中 .class 文件中的方法是如何被执行的,这篇文章中的有些部分可能会看不懂,所以推荐先看下前面几篇文章。 这篇文章主要介绍 ASM 库的结构、主要的 API,并且通...

ASM库介绍与使用
Android技巧 #Android

App保活术

为什么要保活? 因为Android的Low memory killer机制,在系统内存不足的情况下,系统开始根据自身的一套进程回收机制结束一些进程,以便腾出内存给需要的进程。 如何判断内存不足? 判断的阈值在不同手机上是不一样的,一旦低于该阈值,系统就会杀死对应优先级的进程。 在adb shell下,通过如下命令来查看阈值: cat /sys/module/lowmemorykiller/para...

App保活术
Android技巧 #Android

Apk瘦身术

Apk瘦身主要从三方面入手:资源文件、源代码和第三方类库。 一、资源文件1.1 删除无用资源文件1.1.1 Lint工具菜单 -> Analyze -> Run Inspection by Name,然后输入Unused resources便可以执行查找无用资源文件。自己根据需要进行删除。 1.1.2 shrinkResourcesbuildTypes { release...

Android技巧 #Android

AMS启动流程

AMS是ActivityManagerService的简称,看名字,似乎是Activity的manager,实际上,它管理的可不只是Activity。 系统启动流程 graph TD; style A fill:#fff style F fill:#5befb9 Z{{Boot ROM}} --> A([Boot Loader]...

Android技巧 #Android

Activity启动流程

原文参考:Activity 启动流程分析(Android10) graph TD; A(启动Activity) --> B[通过Binder调用AMS的startActivity方法] --> C[通过Intent获取到目标Activity] --> D{目标Activity是否启动} --> |是|E[通过Instrumentation创建Activ...

Android技巧 #Android

IRouter——自己手撸一个路由框架

现在最流行的路由框架应该是阿里的ARouter,这几乎是组件化应用的必备了。但是ARouter用起来稍微有一点不爽,不爽在以下两点: 没有一个规范化的api式的调用方式:项目大了,调用路由的方法分布在项目各处,难以查找; 对startActivityForResult支持不够友好:按照传统方式,在onActivityResult中处理,比较分散。 基于以上问题,闲来无事,手撸一个自己的路由框架...

IRouter——自己手撸一个路由框架
源码分析 #Android