自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 探秘Kotlin协程机制

1

2021-12-16 15:39:56 1862

原创 Android Studio快捷键大全

参数提示如果某个方法参数超级长,你不知道参数是什么怎么办?我们可以使用下面快捷键。Ctrl + P自动提取方法我们在优化代码的时候,会看见有臭有长的代码,而我们传统的做法是新建一个函数,把代码复制过去,这个过程可以用使用下面快捷键完成。Ctrl + Alt + M自动提取参数我们在开发过程中,发现函数用到的变量最好是当作参数传递进来比较好,如果手动修改要在每个添加函数的地方修改繁...

2020-02-26 17:46:16 431

原创 Binder设计与实现

Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细...

2019-11-05 20:01:25 231

原创 Android系统启动-Init篇

一、概述init进程是Linux系统中用户空间的第一个进程,进程号固定为1。Kernel启动后,在用户空间启动init进程,并调用init中的main()方法执行init进程的职责。对于init进程的功能分为4部分:解析并运行所有的init.rc相关文件根据rc文件,生成相应的设备驱动节点处理子进程的终止(signal方式)提供属性服务的功能...

2019-09-29 10:09:52 423 1

原创 Android进程创建流程

进程创建过程的简要图:图解:App发起进程:当从桌面启动应用,则发起进程便是Launcher所在进程;当从某App内启动远程进程,则发送进程便是该App所在进程。发起进程先通过binder发送消息给system_server进程;system_server进程:调用Process.start()方法,通过socket向zygote进程发送创建新进程的请求;zygote进程:在执行Zyg...

2019-09-28 16:22:15 539

原创 Android消息机制--Handler实现原理

设计Handler 的初衷Java中有很多种方法实现线程之间的通信,例如:通过synchronized关键字以“上锁”机制实现线程间的通信。多个线程持有同一个对象,他们可以访问同一个共享变量,利用synchronized“上锁”机制,哪个线程拿到了锁,它就可以对共享变量进行修改,从而实现了通信;使用Object类的wait/notify机制,执行代码obj.wait();后这个对象obj所在的线...

2019-09-27 10:46:03 241

原创 ADB命令大全

一、ADB 简介ADB(Android Debug Bridge) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行...

2019-09-25 11:23:53 397

原创 startActivity启动过程分析和Activity生命周期

一、startActivity启动过程启动流程:点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;system_server进程接收到请求后,向zygote进程发送创建进程的请求;Zygote进程fork出新的子进程,即App进程;App进程,通过Binder IPC向sytem_server进程发起a...

2019-09-24 16:13:38 2341

原创 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

进程:每个app运行时前首先创建一个进程,该进程是由Zygote fork出来的,用于承载App上运行的各种Activity/Service等组件。进程对于上层应用来说是完全透明的,这也是google有意为之,让App程序都是运行在Android Runtime。大多数情况一个App就运行在一个进程中,除非在AndroidManifest.xml中配置Android:process属性,或通过na...

2019-09-24 10:46:18 214

原创 Android系统架构

一、引言Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用户空间的Java层和Native层(C++/C),从而连通整个系统。下图是Google官方提供的经典分层架构图,从下往上依次分为Linux...

2019-09-24 10:18:35 375

原创 为什么 Android 要采用 Binder 作为 IPC 机制?

首先先介绍下Linux现有的所有进程间IPC方式:1.管道:在创建时分配一个page大小的内存,缓存区大小比较有限;2.消息队列:信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信;3.共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;4.套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络...

2019-09-24 09:48:41 197

空空如也

空空如也

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

TA关注的人

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