Home
malinkang
Cancel

AndroidI/O优化

I/O的基本知识 1.文件系统 2.磁盘 Android I/O 1.Android闪存 2.两个疑问 I/O的性能评估 1.I/O性能指标 2.I/O测量 第一种方法:使用proc 第二种方法:使用strace 第三种方法:使用vmstat I/O跟踪 1.Java Hook 2.Native Hook 3.监控内容 线上监控 1.主线程I/O 2.读写...

Android优化之内存优化

目录 使用内存效率更高的代码结构 谨慎使用服务 使用经过优化的数据容器 谨慎对待代码抽象 针对序列化数据使用精简版-protobuf 避免内存抖动 移除会占用大量内存的资源和库 缩减总体 apk大小 使用-...

Android崩溃优化

Android的两种崩溃 Android崩溃分为Java崩溃和Native崩溃。Java崩溃就是在Java代码中,出现了未捕获异常,导致程序异常退出。Native崩溃一般都是因为在Native代码中访问非法地址,也可能是地址对齐出现的问题,或者发生了程序主动abort,这些都会产生相应的signal信号,导致程序异常退出。 1.Native崩溃的捕获流程 2.Native崩溃捕获的...

创建应用程序进程

一个App打开另一个App的Activity或者绑定另外一个App的服务的过程,如果另外一个App的进程不存在,都会先创建另外一个App的进程,再执行后续操作。 应用程序进程创建过程可以分为以下几部分: AMS发送启动应用程序进程请求 Zygote接收请求并创建应用程序进程。 ActivityThread初始化 AMS发送启动应用程序进程请求 这里先给出AMS发送...

SystemServer启动流程

SystemServer进程主要用于创建系统服务,我们熟知的AMS、WMS和PMS都是由它来创建的。 一旦在init.rc中为Zygote制定了启动参数--start-system-server,那么ZygoteInit就会调用startSystemServer来启动SystemServer集成。 SystemServer main() //frameworks/base/servi...

Zygote进程启动流程

在Android系统中,应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也将它称为孵化器。它通过fork(复制进程)的形式来创建应用程序进程和SystemServer进程。 Zygote进程是在init进程启动时创建的,起初Zygote进程的名称并不是叫“zygote”,而是叫“app_process”,这个名称是在Android.mk中...

init启动流程分析

关于自我提升的思考

从12年算起,自己也在软件开发这个行业已经近7年。自己也一直在从事Android移动开发。回顾自己的这7年,对自己是非常失望的。自己一直从事着应用层的开发,只是一些系统API和第三方库的调用。对于一些高深的Android知识,比如Android安全、Android内核源码并不熟悉。 回顾自己这7年,自己也规划过自己的学习路线,但是常常因为一些知识用到的非常少,学了忘,忘了学。还有些时候还特...

Android运行时权限

权限的作用是保护 Android 用户的隐私。Android 应用必须请求权限才能访问敏感的用户数据(例如联系人和短信)以及某些系统功能(例如相机和互联网)。系统可能会自动授予权限,也可能会提示用户批准请求,具体取决于访问的功能。 Android 安全架构的设计主旨是:在默认情况下,任何应用都没有权限执行会对其他应用、操作系统或用户带来不利影响的任何操作。这包括读取或写入用户的私有数据(例...

《Kotlin实战》读书笔记 第8章 Lambda作为形参和返回值

8.1 声明高阶函数 高阶函数就是以另一个函数作为参数或者返回值的函数。 8.1.1 函数类型 val sum = { x: Int, y: Int -> x + y } val action = { println(42)} run { println(sum(1,2)) //3 } run{ acti...