
framework
just2learn
这个作者很懒,什么都没留下…
展开
-
Android 静态广播和动态广播接收顺序
Android广播有两个很重要的要素: 1 广播-用于发送广播 有序广播 - 被广播接收器接收后,可被终止,无法往下继续传达。 典型代表:短信广播 普通广播 - 发送至每一个已经注册(订阅)的广播接收器,无法被终止。 典型代表:开机启动广播 2广播接收器- 用于订阅广播后接收广播 静态注册广...转载 2019-12-16 19:58:20 · 1134 阅读 · 0 评论 -
MessageQueue原理分析(2)
而在Handler的消息机制中,MessageQueue可能算是最重要的,今天我们就来分析这个类。在分析之前,先提出两个问题:1.Handler.sendMessageDelayed()怎么实现延迟的?2.Looper.loop是一个死循环,拿不到需要处理的Message就会阻塞,那在UI线程中为什么不会导致ANR?现在,我们带着这两个问题进入MessageQueue的分析中。首先看第一...转载 2019-12-05 19:20:12 · 449 阅读 · 0 评论 -
MessageQueue原理分析(1)
每次使用Handler发送一个Message的时候,最终会先调用MessageQueue的enqueueMessage方法将Message方法放入到MessageQueue里面,最后会调用Handler的mQueue的enqueueMessage方法。MessageQueue类内部实现了两个Interface,一个静态内部类。接口IdleHandler在消息队列没有消息时使用,处理poll...转载 2019-12-05 18:35:42 · 1739 阅读 · 0 评论 -
Android6.0 SurfaceControl分析(转载)
这篇文字写的不错,收藏文章太多不好找,转载链接只为能快速找到文章:(一)SurfaceControl创建&使用 Surface创建&使用https://blog.youkuaiyun.com/kc58236582/article/details/64918810(二)SurfaceControl和SurfaceFlinger通信https://blog.csdn.n...转载 2019-11-26 19:34:19 · 441 阅读 · 0 评论 -
Surface分析
本篇针对Surface模块进行分析,从Java层的Activity创建开始,到ViewRoot、WindowsManagerService,再到JNI层和Native层。Surface的创建涉及三个部分: App 进程 App需要将自己的内容显示在屏幕上,所以App负责发起Surface创建请求,创建好Surface后, 就可以直接可以在canvas上画图等,最终都会保存到Surfac...转载 2019-11-25 16:02:40 · 672 阅读 · 0 评论 -
聊一聊Android的消息机制
1概述在Android平台上,主要用到两种通信机制,即Binder机制和消息机制,前者用于跨进程通信,后者用于进程内部通信。从技术实现上来说,消息机制还是比较简单的。从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有:1)消息发送者;2)消息队列;3)消息处理循环。示意图如下:图中表达的基本意思是,消息发送者通过某种方...转载 2019-11-20 14:40:47 · 179 阅读 · 0 评论 -
createPackageContext方法分析----------记一次context的getApplicationContext为空问题
通过createPackageContext方法获取其他应用context,lnflate这个应用的布局视图添加后,此视图context的getApplicationContext为空问题调查。问题现象:通过调用createPackageContext方法获取了某个应用的context:remoteContext,然后通过remoteContext.getResources()获取对于...原创 2019-11-15 17:46:41 · 2709 阅读 · 1 评论 -
Android里的Context
侯亮(本文以Android 7.0为准)1 什么是Context?在Android平台上,Context是一个基本的概念,它在逻辑上表示一个运行期的“上下文”。其实何止是Android平台,在其他平台上,一样有上下文的概念,比如一个进程,其实也是个上下文。我们在编写最简单的C语言程序时,凭什么写一句简单的malloc()就可以申请到内存,写一句简单的open()就可以打开一个文...转载 2019-11-15 16:50:49 · 173 阅读 · 0 评论 -
Binder之传输机制篇_下
1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadState作为处理命令的一方需要向发起方反馈信息的话,它会调用sendReply()函数,向bin...转载 2019-09-11 23:48:10 · 474 阅读 · 0 评论 -
Binder之传输机制篇_中
1 谈谈底层IPC机制吧 在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动。然而在驱动层,这部分数据又是如何传递到BBinder一侧的呢?这里面到底藏着什么猫腻?另外,上一篇文章虽然阐述了4棵红黑树,但是并未说明红黑树的节点到底是怎么产生的。现在,我们试着回答这些问题。1.1 概述 在Binder驱动层,和ioctl()相对的动作是b...转载 2019-09-11 23:46:41 · 517 阅读 · 0 评论 -
Binder 之传输机制篇_上
1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于应用层次的东西,仅靠它当然无法完成精确打击。其实,在binder驱动层,还有个与之相对的结构,...转载 2019-09-11 23:45:21 · 348 阅读 · 0 评论 -
Binder 之ServiceManager
1.先说一个大概 Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求。这就必须打破过去各个孤立App所形成的天然藩篱。为此,Android提供了Binder机制。 在Android中,系统提供的服务被包装成一个个系统级service,这些service往往会在设备启动...转载 2019-09-11 23:43:44 · 348 阅读 · 0 评论 -
Activity的启动流程中创建应用程序进程的流程分析
之前从网上找到的一张activity启动流程图,步骤画的比较全,不过有创建应用进程的地方有两个点没表现出来,本文又根据代码简单的捋了一下这个地方。 AMS创建应用进程时,在startProcessLocked方法中通过Process.start方法创建进程: // Start the process. It will either succeed and retu...原创 2018-12-14 23:21:53 · 308 阅读 · 0 评论 -
activity getIntent() 方法获取不到值的问题分析
之前有同事小伙伴问我说,他在activity里边调用getIntent()方法没有获取到应该传递过来的值。看了下他这个activity是single task属性的,怀疑是由于activity的single task属性引起的。本文主要是针对这个getIntent()方法分析下源码定位原因: /** Return the intent that started this activit...原创 2018-12-15 23:16:45 · 5766 阅读 · 3 评论 -
android P 隐藏API对系统APP的影响
转载至 https://www.jianshu.com/p/8286c91fdcb9android P限制了第三方APK对@hide API的调用,那么对系统APK有什么影响呢?国内各大手机厂商对ROM进行各种定制,可以很容易绕过这些限制,那对于需要出海并且满足CTS要求的厂商有什么影响呢?先说结论:对系统厂商APK没有任何影响,依然可调用任何API 第三方APK,受hide...转载 2018-12-28 14:36:06 · 1582 阅读 · 0 评论 -
Android UID的分配、查看及相关知识
转载自https://www.jianshu.com/p/b33dd49f2ae6uid pid gid gids 的含义和作用 uid 的分配 查看应用UID 的几种方式 通过uid获取包名,通过包名获取uid下面所有涉及的示例代码都是基于 Android 8.1的。1. uid pid gid gids 的含义和作用uid: android中uid用于标识一个应用程序,ui...转载 2018-12-29 16:27:05 · 2294 阅读 · 0 评论 -
TypedArray流程分析
Context#obtainStyledAttributes// 调用Resources.Theme的obtainStyledAttributes方法return getTheme().obtainStyledAttributes(attrs);在Context中的getTheme方法是抽象方法,那我们得看他的子类的具体实现,我们一般会在自定义View的时候调用此方法,而自定义V...转载 2019-01-04 13:53:17 · 602 阅读 · 0 评论 -
深入理解MessageQueue
这篇文章写的不错https://blog.youkuaiyun.com/qq_24531461/article/details/72972416#commentBox,用简单的代码将大体原理描述清除,通俗易懂。下面补充个图:这个图比较形象的介绍了,handler、Looper、MessageQueue和Msg 的关系,其中Looper和MessageQueue是比较重要的两个类。Looper的lo...转载 2018-12-31 15:40:45 · 463 阅读 · 0 评论 -
INotify与Epoll机制
使用背景Android Input需要使用InputReader去监控设备节点的一些动作,包括节点的新建和删除动作以及如何去确定节点中是否有内容可以去读.最简单的方法是起一个线程在循环中不断地去做轮询(polling),但是这样做的效率比较低,而且会导致设备的电量在无意义的轮询中消耗掉.众所周知Android使用的Linux内核,因此面对这种问题,Android使用了Linux提供的INoti...转载 2019-01-01 16:54:15 · 1360 阅读 · 0 评论 -
DirectBoot功能介绍
当手机已经通电开机但是用户并有解锁锁屏的时候,Android N运行于一个安全的模式,也就是Dierect Boot模式。 为了支持Dierect Boot模式,系统提供了两个存储数据的地方:1.Credential encrypted storage,默认存储数据的地方,仅在用户解锁手机后可用。2.Device encrypted storage,主要对应的就是Direct Boot使用的...转载 2019-01-27 00:02:55 · 5117 阅读 · 2 评论 -
View的onAttachedToWindow和onDetachedFromWindow的调用时机分析
笔者为什么会挑这个话题,是因为长时间以来我自己对这2个方法一直有些疑惑,比如:为啥叫onAttachedToWindow而不是onAttachedToActivity,Window又是什么,在哪里?毕竟我们平时绝大多数时候接触到的是Activity啊; Activity有明确的生命周期方法,但View却没有,那么这2个方法可以认为是View的吗?它们又何时会被调用呢?慢慢地随着在这一行逐渐...转载 2019-06-28 10:56:52 · 2003 阅读 · 0 评论 -
Binder 概述
1 什么是Binder? 简单地说,Binder是Android平台上的一种跨进程交互技术。该技术最早并不是由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,而且在Palm中也有应用。后来OpenBinder的作者Dianne Hackborn加入了Google公司,并负责Android平台的开发工作,所以把这项技术也带进了Android。...转载 2019-09-11 22:48:26 · 4355 阅读 · 0 评论