0%

概述

Arouter: 阿里开源的一个用于帮助 Android App 进行组件化改造的框架,支持模块间的路由、通信、解耦。具体使用参考官方文档 Arouter。典型应用:

  • 从外部URL映射到内部页面,以及参数传递与解析
  • 跨模块页面跳转,模块间解耦
  • 拦截跳转过程,处理登陆、埋点等逻辑
  • 跨模块API调用,通过控制反转来做组件解耦
阅读全文 »

限制原理

Google 从 Android P 开始引入了针对非公开 API 的限制,这一点可以从 Native 相关的源码中找到限制的原理,从而从中找到解决办法,不过非必要原因不太建议去挑战这种限制,毕竟不清楚在后续的版本中会不会做限制,维护起来挺麻烦的。

阅读全文 »

概述

这两篇后台启动 Activity 的文章的 Demo 工程见 Github, 如有问题欢迎提出。

前段时间调研 Android 后台启动 Activity 的方案,参考 实战|Android后台启动Activity实践之路 一文,当时的结论如下:

原生Android ROM

Android 原生 ROM 都能正常地从后台启动 Activity 界面,无论是 Android 9(直接启动) 还是 10 版本(借助全屏通知)。

阅读全文 »

概述

接着上次后台启动 Activity 的需求,依照 实战|Android后台启动Activity实践之路 中的一些方法处理后,虽然在 Android Q 版本上还是有一些问题,但后台启动的能力算是基本完成了,后来我又解开了小米 ROM 的源码,找到了他们后台启动这一项权限的实现方式以及怎么绕开这项权限的方法,发现结果意外的简单..(这部分以后有机会单独写一篇文章)。

阅读全文 »

概述

前几天产品提了一个需求,想在后台的时候启动我们 APP 的一个 Activity,随着 Android 版本的更新,以及各家 ROM 厂商的无限改造,这种影响用户体验的功能许多都受到了限制,没办法,虽然是比较流氓的功能,但拿人钱财替人消灾,于是开启了哼哧哼哧的调研之路。

阅读全文 »

概述

应用启动的类型可分为三种:

  • 冷启动:耗时最长,从点击应用图标到创建进程再到 UI 显示且用户可操作的全部过程。
  • 热启动:耗时最短,直接从后台切入前台,只会走 Activity 的部分生命周期方法(onRestart, onResume)。
  • 温启动:耗时介于上面两种启动方式之间,不会重走进程的创建,以及 Application 的创建和生命周期流程,只会重走 Activity 的生命周期。
阅读全文 »

概述

Android 内存优化是性能优化中最重要的一个优化点之一,在进行内存优化之前,需要对 Android 和 Java 的内存分配和管理机制有一定的理解,这样在平时的工作中才能时刻注意到内存优化这个点,内存优化涉及到开发中的方方面面,如避免内存泄漏,合理使用数据结构,合理使用 Bitmap 位图等等,本文只列举出部分优化场景。关于分析内存的工具可以参考 Android性能优化之工具篇

阅读全文 »

概述

一个APK实际上就是一个压缩文件,解压后可以看到通常包含如下几种类型的文件或文件夹:

  • classes.dex源码;
  • 编译生成的二进制资源文件resources.arsc;
  • res资源文件夹;
  • assets文件夹;
  • lib库文件夹;
  • AndroidManifest.xml清单文件;
  • 依赖关系配置文件project.properties;
  • 代码混淆配置文件proguard.cfg;
  • 签名信息文件META-INF等。
阅读全文 »

概述

Android 图形显示系统的相关原理可参考 Android图形系统综述 中的系列文章,在了解了 Android 图形显示系统的工作原理之后,可以得出造成页面卡顿的根本原因可分为两种:

  1. 绘制任务过于复杂,使得绘制一帧的时间过长。
  2. 主线程太忙碌,使得没有及时处理 Vsync 信号到来后的绘制任务。

因此可以针对这两个原因来做相关的优化工作。

阅读全文 »