- 博客(10)
- 问答 (2)
- 收藏
- 关注
原创 binder源码分析(五)
本篇从ServiceManager.addService()作为例子分析。 addService 前几篇分析过,getIServiceManager()拿到的是ServiceManagerProxy,调用其对应的addService。而addService也是向Parcel写入参数,然后调用transact,和getService差不多,值得注意的是写入参数时,有writeStrongBinder...
2020-04-09 21:21:40 269
原创 binder源码分析(三)
binder_transaction binder_transaction比较长,首先要有一些结构体的认识: binder_node 可以理解为binder实体的节点 binder_work binder驱动中的事务 binder_proc 进程所持有的binder信息,值得注意的是,binder_proc有四棵红黑树,分别是threads,nodes,refs_by_desc和refs_by_...
2020-04-05 22:05:57 413
原创 binder源码分析(二)
Service获取 ServiceManager getService(),先从cache里面查找服务是否已注册,没有就getIServiceManager().getService()。 getIServiceManager()中返回ServiceManagerNative.asInterface(Binder.allowBlocking(BinderInternal.getContextOb...
2020-04-02 00:00:45 340
原创 Activity相关杂谈(二)
Intent flag之FLAG_ACTIVITY_FORWARD_RESULT 关于FLAG_ACTIVITY_FORWARD_RESULT,可以看Intent的注释: /** * If set and this intent is being used to launch a new activity from an * existing one, then the re...
2020-03-27 00:00:16 183
原创 android activity相关杂谈
看Activity启动流程中,记一下关于Launcher、SystemServer、Application的一些笔记。 Launcher Launcher在onCreate时会创建LauncherModel并调用startLoader,创建LoaderTask。调用 loadWorkspace、bindWorkspace等。loadWorkspace会查询获取widget、shortcut、fol...
2020-03-24 00:31:52 133
原创 android事件分发机制分析(三)
总结一下事件分发,下图源自Kelin的简书文章,介绍了对于ACTION_DOWN事件的分发,上面是activity,中间是ViewGroup,下面是View,当然多层ViewGroup也是同样的道理。 ACTION_DOWN Activity: 首先调用dispatchTouchEvent对事件进行分发。 若ViewGroup或者子view不消费,调用自身的onTouchEvent; Gro...
2020-03-09 23:00:00 95
原创 android事件分发机制分析(二)
dispatchTransformedTouchEvent 如果不是cancel的话,尽管pointerId可能有所不同,但是大体逻辑还是一样的,如果传入的view为null,将ViewGroup视为一个普通的view,调用dispatchTouchEvent,否则调用的dispatchTouchEvent。对于pointerId的不同的情况,会将event的pointerId赋值为新的再传递下去...
2020-03-09 17:41:46 104
原创 android事件分发机制分析(一)
事件分发机制分析 Activity Activity的分发机制比较简单,如果是ACTION_DOWN则调用onUserInteraction(),该函数实现默认为空,可自定义拦截,接着将调用ViewGroup的dispatchTouchEvent(),如果ViewGroup消化掉了则直接返回true,否则调用Activity的onTouchEvent()。官方的注释也写道,开发者可以重写该函数以拦...
2020-03-05 00:22:51 428
原创 binder源码分析(一)
前言 接触Android的时候就对binder有所耳闻,作为进程间通信的工具,binder驱动,拷贝数据的次数少,使用起来,前段时间看来了些源码,自己尝试分析了之后还是受益匪浅,写下来,日后也可以看看回顾一下。 servicemanager int main(int argc, char** argv) { struct binder_state *bs; union seli...
2020-02-18 22:03:38 563
空空如也
npm安装问题!!this socket is closed
2015-12-28
c++内存问题!!!!!!!
2015-05-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人