随笔分类 - Android
摘要:一、OkHttp框架流程 整个流程中最重要的两部分是Dispatcher和Interceptor。 Dispatcher事件分发,分为同步队列和异步列两种分发模式: 同步请求执行过程指在同步队列中添加请求事件 --> 移除请求事件 --> 执行请求事件; 异步分发指在Dispatcher中有一个线程
阅读全文
摘要:1. Android 中动画分类 逐帧动画; 补间动画; 属性动画; 过渡动画; 2. 动画机制 1. 逐帧动画 逐帧动画也叫Drawable Animation,在Android中逐帧动画实现是通过将动画素材按帧渲染,就是开发可以指定每帧动画的图片和持续时间。 2. 补间动画 与逐帧动画不同,补间
阅读全文
摘要:一、线程调度方案 线程优先级nice值。 cgroup线程分组策略。 二、线程优先级nice值 nice值是在Process类中定义的。 nice值越小,优先级越高。 THREAD_PRIORITY_DEFAULT = 0。 线程优先级具有继承性。 Android中UI线程的优先级是TTHREAD_
阅读全文
摘要:一、屏幕尺寸 屏幕尺寸是指对角线长度,1英寸等于2.54厘米。 Android设备中常见尺寸有:2.8、3.5、3.7、4.2、5.0、5.5、6.0等。 二、屏幕分辨率 屏幕分辨率是指纵横向的像素点,1px=1像素,px是pixel。分辨率表示是纵向x横向,即:1920x1080,就是纵向(高)1
阅读全文
摘要:一、反射机制定义 Java反射机制就是在程序运行状态中,对于任意一个类,都能知道这个类的所有的属性和方法;对于任意一个对象,都能任意的调用对象中属性和方法;这种动态获取类信息以及动态调用对象中任意的属性和方法的功能就是Java的反射机制。 在Java中使用ClassLoader类动态装载Class文
阅读全文
摘要:一、idleHandler是做什么的 /** * Callback interface for discovering when a thread is going to block * waiting for more messages. */ public static interface Id
阅读全文
摘要:一、简介 Perffto工具是Android 10及以上版本提供的的跟踪工具,与Systrace工具不同,Perffto是平台级工具,提供数据的超集。
阅读全文
摘要:一、Systrace的作用 系统跟踪工具,记录短时间内的设备活动。Systrace是Android 4.1版本及以上版本提供的性能数据采集和分析工具。 Systrace帮助开发者收集Android子系统(如:SurfaceFlinger、WindowManagerService等Frameworks
阅读全文
摘要:一、简介 TraceView是Android自带的工具,用于分析函数调用过程,可以对Android应用层和Frameworks层代码进行性能分析。在新版本Android Studio弃用了此工具,使用Profile集成工具分析。 TraceView是图形化性能分析工具,工具输出*.trace文件。如
阅读全文
摘要:一、测量方式 1. 使用AM服务启动App的第一个界面并输出应用启动时间。 通过adb命令执行am命令启动App并出界应用启动时间。 命令格式: adb shell am start -W packagename/packagename.首页Activity 示例: adb shell am sta
阅读全文
摘要:一、App启动分类 1. App启动时间 App启动时间(App startup time)是官方给出的指标标准。 2. 启动分类: 冷启动 热启动 温启动 二、各分类启动过程 冷启动 桌面图标被点击触发应用启动,从AMS收到启动应用事件,通知Zygote启动应用进程,到应用生命周期执行,到Acit
阅读全文
摘要:一、子线程创建Handler的前题条件是什么 子线程创建Handler必须先创建子线程Looper。 假如,在子线程不先创建Looper会怎样? Thread { _handler = Handler() }.start() 结果: E/AndroidRuntime: FATAL EXCEPTION
阅读全文
摘要:一、Binder是什么? Binder是Android提供的进程IPC通信的工具。Binder通信使用的数据结构是Parcel。 二、Binder的优点? 在Linux中进程IPC通信方式有很多,其中最常用的管道、Socket、共享内存、信号等。为什么Android还要设计一套新的IPC通信机制。
阅读全文
摘要:一、Parcel是什么 Container for a message (data and object references) that can be sent through an IBinder. A Parcel can contain both flattened data that wi
阅读全文
摘要:一、Android中常用的IPC通信 管道 Socket 共享内存 信号 二、管道 管道是一种IPC通信方式,分为有名管道和无名管道,无论是有名管道还是无名管道其原理都是在内核开辟一块缓存空间,这段缓存空间的操作是通过文件读写方式进行的。 管道为分半双工和全双工: 半双工:半双工管道是单向通信,进程
阅读全文
摘要:一、Surface的Buffer是从哪里来的? 源码:frameworks/base/core/java/android/view/ViewRootImpl.java View触发绘制是通过requestLayout()函数或者setLayoutParms()函数: performTravsersa
阅读全文
摘要:一、Surface是什么 Handle onto a raw buffer that is being managed by the screen compositor. 大概意思是处理由屏幕合成器管理的原理缓存区。 二、Surface实现原理 在Surface类里有一个Canvas对象,在Canv
阅读全文
摘要:一、SurfaceFlinger是什么? SurfaceFlinger接受缓冲区,对图形数据进行合成,然后发送到屏幕渲染。 WindowManager与SurfaceFlinger关系 WindowManager为SurfaceFlinger提供缓冲区和窗口元数据,SurfaceFlinger可使用
阅读全文
摘要:一、简介 Service是Android四大组件之一,也可以称为后台服务。Service是一个可以长期在后台执行而不用提供用户界面的应用组件。服务可由其它应用组件启动,即使切换到其它应用组件,服务依然会在后台继续运行。 此外,组件可以绑定到服务,并与之进行交互,甚至是执行进程间通信(IPC)。 例如
阅读全文
摘要:一、Service基础 1. Service是什么? Service是一种在后台长时间运行,但是没有界面与用户交互的组件。在App退出时,Service依然在后台运行,这就是Service保活。 Service与BoradCast都是运行在主线程中。所以,Service不能执行耗时操作。 2. Se
阅读全文

浙公网安备 33010602011771号