Android系统源码
Android系统源码分析
z真真
我是咸鱼,我是咸鱼,我是咸鱼!
展开
-
AsyncTask源码分析(Api28)
文章目录AsyncTask实例化执行AsyncTask任务execute() 提交任务sDefaultExecutor线程池的创建任务执行结束回调进度值更新AsyncTask是个抽象类,需要自定义Task继承,实现其抽象方法。其底层实现:线程池 + Handler机制Params:执行AsyncTask时传入的参数,可用于在后台任务中使用。Progress:后台任务执行时,如果需要显示当...原创 2019-10-26 17:21:47 · 163 阅读 · 0 评论 -
LayoutInflater解析 (api28)
文章目录LayoutInflater实例化方式一:getLayoutInflater()方式二:LayoutInflater.from(context)LayoutInflater加载xml布局LayoutInflater.inflate(resId, root, attach)ViewGroup.addViewLayoutInflater.inflate(resId, root) 实现将xm...原创 2019-10-25 16:14:31 · 270 阅读 · 1 评论 -
Context详解(API29)
Context是一个抽象类,我们通过这个Context可以访问包内的资源(res和assets)和启动其他组件(activity、service、broadcast)以及系统服务(systemService)等。所以Context提供了一个应用程序运行环境,在Context的环境里,应用才可以访问资源,才能和其他组件、服务交互,Context定义了一套基本功能接口,我们可以理解为一套规范,而Act...原创 2019-07-23 18:57:14 · 485 阅读 · 0 评论 -
SharedPreference源码解析(API29)
文章目录获取SP实例SP初始化获取键值对存入键值对commit & applycommitToMemory提交到内存中enqueueDiskWrite为什么SharedPreference不适合存储大容量数据总结获取SP实例在Activity中,可通过 getPreferences(mode) 获得sp实例(以当前类名为sp文件名)。任意ContextImpl的子类中,都可通过ge...原创 2019-10-22 19:14:41 · 259 阅读 · 0 评论 -
属性动画PropertyAnimation源码分析 (api28)
文章目录属性动画PropertyAnimation关键帧的处理AnimationHandler动画真正执行点总结:属性动画PropertyAnimation实例Button icon = (Button) findViewById(R.id.button1); ValueAnimator valueAnimator = ValueAnimator.ofInt(200, 400...原创 2019-10-15 16:59:27 · 202 阅读 · 0 评论 -
补间动画TweenAnimation源码分析(api28)
参考:View 补间动画运行原理属性动画运行原理View.animate运行原理原创 2019-10-15 12:46:04 · 241 阅读 · 0 评论 -
view.post源码解析 (API29)
参考:【Android源码解析】View.post()到底干了啥原创 2019-10-14 12:00:21 · 249 阅读 · 0 评论 -
Android 类加载机制(API27)
JVM加载的是class文件,系统提供的类加载器(BootStrapClassLoader、ExtensionClassLoader、ApplicationClassLoader)安卓虚拟机加载的是dex文件,系统提供的dex加载器(DexClassLoader、PathClassLoader)class文件、资源文件、AndroidManifest.xml 经过编译打包,成为ap...原创 2019-06-13 18:31:55 · 467 阅读 · 0 评论 -
Android 打包流程
原创 2019-05-17 18:01:01 · 224 阅读 · 0 评论 -
Binder机制总结
在Linux系统里面,进程之间是相互隔离的,也就是说进程之间的各个数据是互相独立,互不影响,而如果一个进程崩溃了,也不会影响到另一个进程。Android系统其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统调用(Syscall)连通系统的内核空间与用户空间。用户空间主要采用C++和Java代码,通过JNI技术打通用户空间的Java层和Native层(C++...原创 2019-01-17 14:47:26 · 444 阅读 · 0 评论 -
IntentService 深度解析(实例 + 源码)
上一篇:Service 深度解析上文说过Service默认工作在当前进程的主线程中,如需执行耗时操作,需要手动开启线程;且一旦开启服务,就会一直运行,直到stopService()或者stopSelf();也就是说我们在线程任务执行完毕后需要手动stopSelf(),才能释放service资源。android提供了IntentService来实现这个功能,封装了线程,并能够在线程任务执行完毕...原创 2019-01-15 10:13:45 · 159 阅读 · 0 评论 -
Handler机制详解(实例 + 源码API28)
Handler机制的作用用于线程间通讯 (进程可以包含一到多个线程,进程和线程的本质区别是能否共享资源,Android进程隔离)子线程UI操作都是通过Handler实现 (Android UI单线程模型,只能在UI线程更新UI)Handler消息机制模型Message:消息的载体,分为硬件产生的消息(如按钮、触摸)和软件生成的消息;(what / arg1 / arg2 / obj)...原创 2019-01-15 10:13:14 · 360 阅读 · 0 评论 -
HandlerThread 使用详解(实例 + 源码)
上一篇:IntentService 深度解析上一篇我们从源码中看到IntentService内部的线程机制,是采用IntentService来实现的,这里我们就来深度解析下HandlerThread。推荐先看一下Handler机制详解(实例 + 源码)Handy class for starting a new thread that has a looper. The looper can...原创 2019-01-15 10:12:38 · 742 阅读 · 0 评论 -
Application的启动过程(源码)
Application 对象的生命周期是整个程序中最长的,即等于Android App的生命周期。Applicaiton类的应用场景初始化应用程序级别的资源,如全局对象、环境配置变量等数据共享、数据缓存,如设置全局共享变量、方法等获取应用程序当前的内存使用情况,及时释放资源,从而避免被系统杀死以前我们说过,应用程序的主入口是ActivityThread#main(),Applicat...原创 2019-01-15 10:11:47 · 635 阅读 · 1 评论 -
Activity的启动过程(源码API27)
Oreo -> Android8.1 -> API level 27启动activity的方式有以下几种:1、在应用程序中startActivity()或startActivityForResult()启动指定activity2、在launcher中单击应用图标,启动新的activity3、按BACK键结束当前activity,自动启动上一个activity4、长按Home...原创 2019-01-15 10:11:08 · 268 阅读 · 0 评论 -
Activity、Window、View关系(API27 源码)
1、相关的类Activity: Activity、ActivityThread、ActivityManager、ActivityManagerServiceWindow: Window、PhoneWindow、WindowManager 、WindowManagerImpl、WindowManagerGlobalView:View、ViewGroup、ViewManager、DecorV...原创 2019-01-15 10:10:20 · 180 阅读 · 0 评论 -
View事件分发机制(源码 API27)
1、什么是事件分发机制当用户触摸屏幕时,会产生一个touch事件,这个touch事件(motionEvent)传递到某个具体的view处理的整个过程用户触摸屏幕会产生一个事件流(ACTION_DOWN -> ACTION_MOVE -> ACTION_UP)一般来说,view负责处理action_down事件后,会由这个view来处理接下来的事件(注意一般来说)2、核心方法...原创 2019-01-15 10:06:40 · 167 阅读 · 0 评论 -
Android View绘制流程(二)(源码 API27)
ViewGroup继承自View,ViewGroup是一个包含View的容器。接口ViewManager里有addView、updateViewLayout、removeView方法,添加、更新、移除方法。同时ViewGroup是个抽象类,不能直接使用,常用的子类有LinearLayout、relativeLayout、constrainstLayout、frameLayout、Coordin...原创 2019-01-14 14:42:22 · 187 阅读 · 0 评论