Android开发
文章平均质量分 62
kerrysimon
这个作者很懒,什么都没留下…
展开
-
(十四)Android的消息机制Handler
Android的消息机制主要指的是Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列,但其内部存储结构并非队列,而是单链表的数据结构来储存消息列表。Looper可以理解为消息循环,MessageQueue只能存储消息,不能处理 ,而Looper则可以,它会以无限循环的形式去查询讯是否有新的消息。原创 2017-07-29 18:13:02 · 197 阅读 · 0 评论 -
(九)View的滑动事件
View提供获取坐标的方法: getTop(),getLeft(),getRight()和getBottom()。 获取的是View自身到父布局上下左右的距离。MotionEvent提供的方法:getX()和getY()方法获取的是点击事件距离控件左上的距离。即视图坐标。getRawX()和getRawY()是获取的是点击事件距离整个屏幕顶边的距离,是android坐标原创 2017-07-29 09:42:28 · 373 阅读 · 0 评论 -
(八)Android的动画机制
实现原理:每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,若动画未完成,就继续调用invalidate函数,启动下次动画来完成绘制。视图View动画:AlphaAnimatio原创 2017-07-29 09:35:32 · 239 阅读 · 0 评论 -
(七)android的绘图机制&&Drawable
首先是关于cavans的save和restore方法,save是保存状态。restore是恢复保存之前的状态, 防止save后对Canvas执行的操作对后续的绘制有影响。如:先save(状态1,坐标左上角为0,0),再调用rotate方法做操作(画线之类)(状态2 坐标系旋转90度 右上角为0,0),再调用restore方法恢复到状态1(坐标左上角为0,0 但 所画的线还在,不变).原创 2017-07-29 09:32:56 · 200 阅读 · 0 评论 -
(六)VIew的绘制过程-measure、layout、draw
View的measure过程由其measure方法来完成,measure是一个final类型的方法,不能重写,因此需在measure方法中调用View的onMeasure方法,在onMeasure方法中又调用setMeasuredDimension方法来设置View宽/高的测量值,该方法的参数是方法getDefaultSize(int size,int measureSpec),该方法在spe原创 2017-07-27 19:05:25 · 350 阅读 · 0 评论 -
(五)View的测量 MeasureSpec类
MeasureSpec类 MeasureSpec是一个32位的int值,高两位为SpecMode(测量模式),低30位为SpecSize(测量大小)。 SpecMode(测量模式)分类: EXACTLY模式:父容器已经测出了View所需要的精确大小,此时View的最终大小就是SpecSize所指定的值。对应math_parent和具体数值两种模式。原创 2017-07-27 19:03:50 · 257 阅读 · 0 评论 -
(四)View的控件架构
Android的控件架构 Android中控件大致分为ViewGroup控件和View控件。在Activity中使用的findViewbyId()方法,就是在控件树中以深度优先遍历查找对应元素。 android UI架构图每个Activvity都包含一原创 2017-07-27 19:02:17 · 440 阅读 · 0 评论 -
(十一)RemoteViews的使用解析
使用场景:桌面小部件和通知栏。PendingIntent:待定的意图。 支持三种待定意图:getActivity(Context context,int requsetCode,Intent intent,int Flag)相当于Context.startActivity(intent) getService(Co原创 2017-07-29 12:02:07 · 659 阅读 · 0 评论 -
(十二)Window和WindowManager的使用解析
Window是一个抽象类,具体实现是PhoneWindow,具体实现位于WindowManagerService中。WindowManager和WindowManagerService的交互是一个IPC的过程。 WindowManager的LayoutParams有两个参数很重要,Flags,表示Window的属性,Type,表示Window的类型。 Window有三种原创 2017-07-29 12:06:14 · 331 阅读 · 0 评论 -
(十三)Window的创建过程
View是android中视图的呈现方式,但View不能单独存在,必须依附Window这个抽象的概念上,因此有视图的地方就有Window。 Activity的Window的创建过程 Activity的启动过程很复杂,最终会由ActivityThread中的performLaunchActivity()来完成整个启动过程,在此方法中会通过类加载器创建Activity的原创 2017-07-29 12:19:03 · 281 阅读 · 0 评论 -
(十 )View的事件分发机制
点击事件的事件分发,其实就是对MotionEvent事件的分发,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个传递过程就是分发过程。ViewGroup包含三个方法:dispatchTouchEvevt()、onInterceptTouchEvent()(默认返回false)、onTouchEvent()View包含两个方法:原创 2017-07-29 09:46:30 · 239 阅读 · 0 评论 -
(三)Activity的启动模式
Activity一共四种启动模式:standard、singleTop、singleTask、singleInstance一个任务栈可以有多个实例,每个实例可以属于不同的任务栈。standard模式:标准模式,系统默认。每次启动Activity都会创建新的实例,谁启动的这个Activity,这个Ativity就运行在启动他的那个Activity所在的栈中。但非Activity类型的Cont原创 2017-07-27 19:01:29 · 173 阅读 · 0 评论 -
(一)activity的生命周期分析
onCreate:Activity被创建,做初始化工作。 onReStart:activity正在重新启动。如:当前activity从不可见 变为可见。 onStart: Activity已经可见,但不可与用户交互。(在后台,人看不到)。 onResume:Activity可见并且可与用户交互。 onPause:Activity正在停止,正常情况会紧原创 2017-07-27 18:58:25 · 161 阅读 · 0 评论 -
(十五)Android的线程和线程池
进程:可并发执行且具有独立功能的程序,是操作系统进行资源分配的基本单位。线程:处理器调度和运行的基本单位。Android中的线程分为主线程和子线程,主线程的作用是运行四大组件以及处理他们和用户的交互,而子线程的作用则是执行耗时任务,如网络请求、I/O操作等。从Android3.0后,,系统要求网络访问要在子线程中进行,以防出现ANR现象。 Android中的线程形态之AsyncTa原创 2017-07-29 18:24:27 · 273 阅读 · 0 评论 -
(十六)Bitmap的加载和Cache
Bitmap的高效加载Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位Bitmap.Config RGB_565:每个像素占四位,即R=5原创 2017-07-29 18:40:32 · 263 阅读 · 0 评论 -
(十七)四大组件的工作过程-Activity
Activity的工作过程从startActivity()方法分析,他有多种重载方法,最终都会调用startActivityForResult(Intent intent,int requestCode,Bundle options)方法,在此方法中会判断mParent对象是否为空,为空进行启动逻辑,调用Instrumentation的execStartActivity方法,需注意mMainT原创 2017-07-29 18:47:11 · 204 阅读 · 0 评论 -
(十八)四大组件的工作过程-Service
Service的工作过程启动过程:从ContextWrapper的startService方法来看,看到由ContextImpl的mBase对象的startService方法开始,在startService方法里返回startServiceCommon方法,在该方法里,通过ActivityManagerNative.getDefault()方法启动service。该star原创 2017-07-29 18:55:36 · 525 阅读 · 0 评论 -
(十九)四大组件的工作过程-BroadcastReceiver
广播的注册过程静态广播在程序安装时由系统自动完成注册,具体是由PMS来完成注册动态广播: 1、由ContextWrapper的registerReceiver方法开始,交给ContextImpl的registerReceiver方法来处理。 2、ContextImpl的registerReceiver方法调用自己的registerReceiverInternal方法原创 2017-07-29 18:57:43 · 249 阅读 · 0 评论 -
(二十)四大组件的工作过程-ContentProvider
ContentProvider是一种内容共享形组件,通过Binder向其他组件乃至其他应用提供数据,当其所在的进程启动时,CP会同时被启动并被发布到AMS中。注意:这个时候CP的onCreate方法会先于Application的onCreate方法执行。一个应用启动时,入口方法为ActivityThread的main方法,它是一个静态方法,在它内部会创建ActivityThread的实例并创建原创 2017-07-29 18:59:25 · 269 阅读 · 0 评论 -
(二十一)Android内存、性能优化
性能优化的方法布局优化:利用、以及ViewStub优化 标签只支持以android:layout开头的属性,若设置了android:layout_*属性,则必须有android:layout_width(height)属性。也可设置 id,若布局也有id,以include指定的id为准。 标签可以减少布局的层级。 ViewStub继承了View,原创 2017-07-29 19:04:08 · 275 阅读 · 0 评论 -
(二十二) IPC机制通讯
IPC是Inter-Process Communication的缩写。多进程简介Android对单个应用的内存做了限制,早期版本可能是16M。通过给四大组建指定Android:process属性,开启多线程模式,无其他方法。特殊情况通过jni在native层fork一个新的进程。进程以“:”开头的是当前进程的私有进程,其他组件不能和他跑在同一进程,全称是“:”前加包名;而进原创 2017-07-29 19:06:15 · 244 阅读 · 0 评论 -
(二)onSaveInatanceState()和onRestoreIntanceState()
当系统只会在activity 异常终止时,会通过调用onSaveInstanceState()方法(在onStop方法之前,可在onPause之前和之后)将Activity状态保存到Bundle对象中。当Activity被重新创建后,调用onRestoreInstanceState()(在onStart方法后),把保存的Bundle对象传给onRestoreInstance()和onCreat原创 2017-07-27 18:56:38 · 544 阅读 · 0 评论 -
OKhttp源码流程分析笔记
okhttp主要包含构建者模式、责任链模式等。主要流程大致如下:构建者模式构造request okhttpclient对象 两套字段,在build方法返回赋值。同步是调用在realCall类(实现Call接口)中的execute方法(设置拦截器链)中dispatcher的execute方法把请求添加到同步请求队列。在finally中调用dispatcher的finished方法,...原创 2019-01-14 21:16:47 · 169 阅读 · 0 评论