Android-SharedPreferences简析 SharedPreferences是系统提供的一种简易数据持久化的手段,适合单进程、小批量的数据存储与访问。以键值对的形式存储在xml文件中。文件存储路径为data/data/package_name/shared_prefs/目录。 源码解析 获取SharedPerferences对象 获取方法从getSharedPreferences(name,mode)开始,此时就需要去加载对应name 2020-11-18 #Android
Android - Drawable相关 Drawable简介 Drawable是一种 可以在Canvas上进行绘制的对象,即可绘制物。与View不同,Drawable没有事件和交互的方法。 在实际开发中,Drawable通常被用作View的背景,一般通过XML进行定义,也支持通过代码去实现(例如动画样式的Drawable)。 Drawable是一个抽象类,是所有Drawable的基类。例如常用的ShapeDrawable、Bitmap 2019-01-10 #Android
Android动画-属性动画 对作用对象进行了扩展,可以对任何对象做动画,甚至可以没有对象。 1.与View动画进行比较 View动画的作用对象只能是View,属性动画可以作用于所有Java对象 View动画并没有改变View的属性,只是改变了View的视觉效果,并不具有交互性(例如:无法响应动画后的点击事件。);属性动画是真正的对View的属性进行了修改,可以方便后续的交互操作。 View动画的效果比较单一,只能实现一 2020-10-12 #Android
Android-事件分发机制 当用户触摸屏幕或者按键操作。 首先触发硬件驱动,驱动收到事件后,将相应事件写入到输入设备节点 输入系统取出内核事件,封装成为KeyEvent或MotionEvent 交付给对应的Window消费该事件。 硬件中断 物理设备将数据发送给内核是通过设备驱动传输的,在dev/input/目录下有几个设备文件eventX。 其中event0对应的就是触摸屏,当触摸屏的驱动被挂载后,驱动程序就会 2020-11-20 #Android
Android-流量统计 流量统计Android目前提供了两种流量计算方案 TrafficStats NetworkStatsManager 这两种方案有着各自的优缺点与限制,下面简单的记录一下 TrafficStats Android API8后提供的该类,可以获取设备重启以来的流量信息。 12345678public class TrafficStats { public static long g 2020-09-15 #Android
Android布局优化-AsyncLayoutInflater简析 布局加载过程中存在两个耗时点: 布局文件读取慢,涉及IO操作 根据<tag>创建View慢(createViewFromTag()),使用反射的方式创建View。布局嵌套层数越多,控件个数越多,反射的次数就会越多。 当XML文件过大、嵌套过深时,就会导致页面发生卡顿甚至ANR。 解决方案有两种: 直接解决:不使用IO操作以及反射 侧面缓解:把耗时操作放到子线程,等待加载完毕返回 2020-11-02 #Android
Android性能优化-启动优化 App启动分为三种:冷启动、热启动、温启动 启动优化主要在冷启动时进行。 冷启动——Cold Start 开机后第一次启动应用 或者 应用被杀死后再次启动。 冷启动耗时检测 adb命令 1234adb [-d|-e|-s <serialNumber>] shell am start -S -W com.example.app/.MainActivity -c andr 2020-10-08 #Android
Android-SurfaceFlinger解析 基于Android 6.0源码进行分析 SurfaceFlinger是Android系统中最重要的图像消费者,Activity绘制的界面图像,都会传递到SurfaceFlinger中。 主要作用:接收图像缓冲区数据,然后交给HWComposer或OpenGL合成,合成完毕后再返回。 SurfaceFlinger初始化init通过执行surfaceflinger.rc文件,然后就执行到了ma 2020-12-21 #Android
Android性能优化 针对Android中的性能优化,主要有以下几个有效的优化方法: 布局优化、绘制优化、内存泄漏优化、响应速度优化、ListView/RecyclerView及Bitmap优化、线程优化、其他 布局优化 核心思想就是:减少布局文件的层级。 删除布局中无用的控件和层次,其次有选择的使用性能比较低的ViewGroup。可以使用RelativeLayout来减少嵌 2018-12-20 #Android