Android Framework
文章平均质量分 52
Android系统Framework
闽农qq:994955138
闽南老农qq:994955138
展开
-
Android开机流程、Zygote进程、systemserver、ServiceManager
上电后,BootRom会被激活,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,然后加载引导程序到RAM。Android是基于Linux系统的,它没有BIOS程序,取而代之的是(系统启动引导程序)。引导程序是厂商加锁和限制的地方,它是针对特定的主板与芯片的。厂商要么使用很受欢迎的引导程序比如redbootubootARMboot等或者开发自己的引导程序,它不是Android操作系统的一部分。流程图如下:Linux内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。原创 2023-05-25 20:22:51 · 2156 阅读 · 4 评论 -
Java Thread 的创建
if (res == false) { ...//清理 return UNKNOWN_ERROR;//首次运行时会调用readyToRun()做一些初始化准备工作。= 0) { ... //创建失败,则返回 return 0;//重新请求强引用,用于下一次的循环。//该参数对于gdb调试很有作用。//只能调用C/C++代码的Native线程。//通过pthread_create创建线程。//user是指Thread对象。原创 2023-05-19 21:22:38 · 900 阅读 · 1 评论 -
Handler、Looper、Message 和 Thread 的合作机制——安卓 Handler 机制、跨线程机制详解
从源码看出,消息的回调严重依赖Handler。Handler 在哪个线程创建,Looper就绑定了哪个线程,消息就回调到哪个线程。所以所谓的跨线程通信就是Thread存储了自己对应的Looper而已。原创 2023-05-19 20:55:11 · 1002 阅读 · 0 评论 -
Only the original thread that created a view hierarchy can touch its views. 刨根问底
开发过程中在子线程访问控件的时候会出现Only the original thread that created a view hierarchy can touch its views。那么异常是从哪里来的呢?通过查询源码可见:原创 2023-05-19 14:13:40 · 212 阅读 · 0 评论 -
一篇说清楚synchronized的类锁、对象锁、方法锁、代码块锁和它们的阻塞情况、死锁由来。
那么就会出现thread1占有mLock锁,需要访问mLock2锁,就需要等待thread2释放mLock2锁。c1.test()和c1.test2()、c1.test3使用的是同一个锁。c1.test()和c2.test()使用的是不同的两个对象锁,所以不同的线程可以同时访问c1.test()和和c2.test()。//非静态方法锁,使用的是对象锁。//非静态方法种的代码块,如果用.class类来加锁,也是类锁。//非静态方法种的代码块,如果用this来加锁,也是对象锁。//静态方法锁,使用的是类锁。原创 2023-05-10 16:18:20 · 1309 阅读 · 0 评论 -
源生Android Json数据解析的深入理解和使用
json数据基础的解析方法想必已经有很多的资料了,我们今天就不讲json数据解析的基础知识了,请有不懂的同学自行补充。今天我们从一个问题例子出发,来扒一扒json数据解析的源代码,从而去理解他的工作方式,这样我们才能更好的去使用它,才能避免解析失败和异常的情况,还有就是不用再纠结于json字符串的格式在安卓中执行如下代码String js = "{\"s\":\"2\"原创 2017-08-08 14:49:09 · 2833 阅读 · 2 评论 -
非Root手机导出libart.so等系统库
非Root手机导出libart.so等系统库原创 2022-12-19 13:56:49 · 961 阅读 · 0 评论 -
Parcelable原理分析以及读取数据异常的根源问题分析
着急的先看结论:Parcelable 的成员变量读写需要严格的遵循 先写先读、后写后读的原则。所以出现数据读取异常,大概率是因为读取顺序和写入顺序不一致。想学东西的看后文分析如下例子public class PackageInfo implements Parcelable { public String packageName="com.exemple.aa"; public int appId = 0; public int appMode = 0; publi.原创 2022-03-18 17:04:58 · 5010 阅读 · 0 评论 -
ContextImpl
内容等待补充原创 2022-01-13 18:31:57 · 192 阅读 · 0 评论 -
ActivityThread
暂无内容,等待补充原创 2022-01-13 18:18:11 · 145 阅读 · 0 评论 -
安卓App启动——Application的启动流程,从startActivity讲起
注意: 我们不在一片文章里面贴上所有代码,而是用 超链接 来连接调用链(蓝色部分为超链接),避免文章粘贴大量代码影响阅读质量。安卓开发日常最常见也是最基础的api可能就是startActivity了。平时使用起来习以为常,也觉得自己会用了。现在让我们来一探究竟,我们熟悉的startActivity究竟是怎么运作的。 让我们循序渐进的来了解,所以是先看代码,然后讲解代码,最后是总结。(一大堆的源码总是让人很无奈,但是他确是了解安卓的最佳资料)。 先上源码: @Ove...原创 2021-11-26 18:30:33 · 1585 阅读 · 0 评论 -
Instrumentation.execStartActivity
方法声明public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options)startActivity的时候传入的参数mInstrumentation.execStartActivity(this,//启动该Activit.原创 2021-11-26 18:29:53 · 1454 阅读 · 0 评论 -
Intent.resolveActivity
public ComponentName resolveActivity(@NonNull PackageManager pm) { if (mComponent != null) {//如果当前组件不为空,则返回组件,为显式Intent return mComponent; }//如果mComponent为空则是隐式Intent,就解析Intent来获得具体是哪个Intent ResolveInfo info = pm.resolveActivity( .原创 2021-11-26 18:28:25 · 288 阅读 · 0 评论 -
解读 PackageManager.resolveActivity
暂无内容,等待更新原创 2021-11-26 18:27:38 · 1683 阅读 · 0 评论 -
第一章 Android Framework 基础认知
因为是第一章,我们从感性认识出发,不讲解太深的理论内容,遇到的代码介绍不懂也没关系,现在只是从宏观的角度出发看个大概,具体的专业内容会在后面各个模块的具体讲解中详细介绍。免得刚开始看就想睡觉。我们都知道Android系统实质上是一个基于Linux内核的系统。它封装了Linux的内核调用,封装了Java虚拟机,提供了基本的硬件驱动程序和一套界面交互程序,从而形成今天的安卓系统。我们的AndroidFramework就是安卓系统对接完硬件和内核之后,隐藏大部分代码,而有限的暴...原创 2021-11-26 16:09:57 · 1517 阅读 · 0 评论 -
Android Instrumentation
暂无内容,等待研究原创 2021-11-26 15:33:36 · 1034 阅读 · 0 评论 -
android8.0 AutofillManager内容自动填充
暂无内容,待研究原创 2021-11-26 15:15:21 · 640 阅读 · 0 评论 -
Android中UID、GID和PID
版权声明:本文为CSDN博主「晓涵涵」的原创文章,本人仅做转发记录原文链接:https://blog.csdn.net/xk7298/article/details/102291785一、概述在实际的开发中经常会碰到各种ID,这是由于在计算机的发展过程中,需要对程序执行的每一步做标记,通过这些标记的关联便于系统的统一管理。像PID、UID、GID、和EUID等,其实对于这些ID不需要刻意记忆,只需要了解其名称含义,就明白其所对应的意义。二、Linux中的概念解析2.1 UID在Linux转载 2021-07-08 10:15:12 · 1364 阅读 · 0 评论 -
第一章 我们先了解什么是android系统
我们都知道android系统实际内核是一个Linux内核。所以android系统和Linux系统的内核实际上是一样的。只不过在Linux内核的上谷歌为了达到定制功能做了一些裁剪和拓展,比如在里面运行ART Java虚拟机,使系统可以运行Java程序。 看到这里可能有点不好理解,什么是内核?什么又是系统?内核就是硬件调用抽象层,他提供调用硬件的API。包括存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。...原创 2021-08-06 14:54:41 · 298 阅读 · 0 评论 -
彻底理解android的各种Flag以及|&运算
我们在看安卓源码的时候经常看到类似flags |= PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE这样的代码,让人一头雾水。那么这个代码到底是什么意思呢?我们先来了解一下按位与和按位或运算。比如我们拿Intent源码来说我们按数值大小给他排个序如下:public static final int FLAG_ACTIVITY_NEW_TASK原创 2021-10-21 17:01:48 · 2546 阅读 · 0 评论