自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 android 内存优化

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的 浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。在Java中,就是该释放的对象无法被释放,那这些对象将一 直内存,最终导致程序可用内存越来越少,直至无内存可用(OOM)。

2024-04-18 14:50:24 867 3

原创 android 内存优化-内存泄漏

内存泄漏在Android内存优化是一个比较重要的一个方面,很多时候程序中发生了内存泄漏我们不一定就能注意到,所有在编码的过程要养成良好的习惯。总结下来只要做到以下这几点就能避免大多数情况的内存泄漏:构造单例的时候尽量别用Activity的引用;静态引用时注意应用对象的置空或者少用静态引用;使用静态内部类+软引用代替非静态内部类;及时取消广播或者观察者注册;耗时任务、属性动画在Activity销毁时记得cancel;文件流、Cursor等资源及时关闭;

2024-04-03 22:44:06 1222 1

原创 android WMS服务

WMS是WindowManagerService的简称,它是android系统的核心服务之一,它在android的显示功能中扮演着极为重要的角色。窗口管理:负责响应进程的添加、移除窗口、启动窗口的业务,以及管理窗口的坐标、层级、大小、令牌等属性。窗口动画:负责处理窗口切换时的动画效果。事件处理:负责处理系统按键、触摸事件给合适的窗口去处理,以及处理部分输入法的交互逻辑。

2024-03-28 23:57:52 1487 1

原创 android PKMS服务

清单文件的解析过程,一般是由PKMS来完成,触发PKMS的执行的分为两个部分:在系统启动的过程中,会启动 SystemServer 进程,而SystemServer进程会启动各种服务,这些服务包括PKMS,在启动PKMS的时候就会扫码apk 安装路径下面的apk,然后解析AndroidManifest文件,并做持久化存储;app 安装的过程中,也会触发PKMS对 apk进行检测,调用类似的流程解析 AndroidManifest文件。

2024-03-26 23:33:53 814

原创 android App启动流程三-Activity启动流程

上一篇我们介绍了从App的进程创建到Application启动执行,今天我们继续深入学习一下,Activity的启动流程。

2024-03-19 22:53:38 1239

原创 android App启动流程二-Application的创建

上一篇我们分析了App启动过程到进程是否需要创建的判断,这章我们接着上篇的内容,继续探讨APP的进程创建以及Activity的创建和启动。

2024-03-18 23:52:44 307

原创 Android 类加载机制

2、parent.loadClass. parent= BootClassLoader,加载自己写的class,父类(系统)加载会失败,因为无法找到。如果没有加载过该class,则自己不加载,由父类加载,父类如果有父类,继续往上,由父类的父类加载,以此类推。该加载器未加载过该class,查找父类加载器是否加载过,如果父类加载器未加载,查找父类的父类是否加载过,以此类推。说白了,就是从父类开始加载,如果加载失败,再由子类加载,子类加载失败,由子类的子类加载,一直尝试到底层子类。

2024-03-17 23:01:19 177 1

原创 android AMS服务的解析

AMS是ActivityManagerService的简称,在Android 10 之前,AMS主要负责对四大组件进行管理和调度,同时,AMS也 对进程、电池、内存、权限等进行管理。但在Android 10开始,系统发现AMS要承载的事务太多,就将Activity的管理迁移到了ActivityTaskManagerService中,ActivityTaskManagerService也被缩写为ATMS。

2024-03-15 23:57:41 767 2

原创 android App启动流程一-启动APP的两种方式

App启动流程分为2个部分,一个是系统开机,拉起Launcher APP。另一个流程分为Launcher APP点击桌面应用图标,然后启动APP。我们首先分析Launcher APP的启动。

2024-03-13 23:17:40 2264 3

原创 android启动流程-SystemServer

SystemService进程被创建后,主要的处理如下:1. 启动Binder线程池,这样就可以与其他进程进行Binder跨进程通信。2. SystemServer在启动过程中,先初始化一些系统变量,加载类库,创建Context对象。3. 创建SystemServiceManager,它用来对系统服务进行创建、启动和生命周期管理。4. 启动各种系统服务:引导服务、核心服务、其他服务,共90多种。

2024-03-12 18:34:22 962 1

原创 android启动流程-从开机到zygote创建

zygote进程的启动分为两大部分,native:执行Native层面的代码,这个过程主要包含:虚拟机启动,JNI资源函 数的注册,启动zygote的java层;java:执行java层面的代码,这个过程主要包含:预加载公用的各种资源,创建socket服务器并在runSelectLoop中死循环等待socket消息,fork 了systemServer进程等操作。

2024-03-11 23:49:39 1180

原创 Android Handler机制的补充

APP启动时,会启动ActivityThread类中的main方法。main方法主要作用是做消息循环,一旦消息循环停止,APP程序就会退出。Android是事件驱动的,在Loop.loop()中不断接收、处理事件,而Activity的生命周期都由主线程的Loop.loop()来调度,所以 主线程Looper的存活周期和App的生命周期基本是一致的。当目前没有事件需要处理的时候,主线程就会阻塞;当 子线程向消息队列发送消息,主线程就被唤醒。ActivityThread是一个 final 类。

2024-03-08 23:21:03 977

原创 android Handler机制

handler机制

2024-03-06 21:27:52 819

原创 android 进程间通信

管道是单向的,管道一端连接着进程的输出,进程把数据放入管道,另一端连接进程的输入,进程从管道获取数据。实现数据通信。信号类似于通知,进程通过sigaction注册接收的信号,执行响应函数。信号量类似一个计数器,用来控制多个进程对共享资源的访问, 会有一个>0的初始值,每当有进程申请使用信号量,信号量就会-1,当减到0的时候,其他进程想要访问,就必须等待,当进程执行完工作后,会释放信号量,进行+1操作。共享内存是一段物理内存,可以供给不同的进程访问。

2024-03-05 15:24:41 1243 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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