Flutter-Dart语言简介 Dart语言设计借鉴了Java和JavaScript,同时存在了两者的特性。 Dart变量声明1var name = 'wxy'; 表示名字是name的变量包含一个指向值为 bob 的字符串对象引用。 当前name的类型被推断为String,当然也可以通过直接指定变量类型,例如String name ='wxy'; 内置类型 主要支持数字、字符串、布尔、数组,集合等数据类型。 2021-02-10 Flutter
Ubuntu18.04 双系统安装笔记 主要用来记录在Win10 系统上安装Ubuntu18的过程 下载镜像制作系统启动U盘分区设置遇到的问题及解决方案 Ubuntu系统删除 2021-01-16 Ubuntu
Android-SurfaceFlinger解析 基于Android 6.0源码进行分析 SurfaceFlinger是Android系统中最重要的图像消费者,Activity绘制的界面图像,都会传递到SurfaceFlinger中。 主要作用:接收图像缓冲区数据,然后交给HWComposer或OpenGL合成,合成完毕后再返回。 SurfaceFlinger初始化init通过执行surfaceflinger.rc文件,然后就执行到了ma 2020-12-21 Android
Hprof文件解析 Hprof对应的就是内存快照。可以方便的凭借Hprof进行OOM分析以及异常治理。 OOM治理 内存快照保存的对象信息和依赖关系也是静态分析内存泄漏的关键。 Crash治理 保存的数据,也可用于分析异常问题。 Hprof文件格式Hprof文件格式有明确组织方式,Android在Java的基础上新增了部分Tag。 Java Hprof格式 整体分为Header和Record数组两部分。 2020-12-14 Java
Android-事件分发机制 当用户触摸屏幕或者按键操作。 首先触发硬件驱动,驱动收到事件后,将相应事件写入到输入设备节点 输入系统取出内核事件,封装成为KeyEvent或MotionEvent 交付给对应的Window消费该事件。 硬件中断 物理设备将数据发送给内核是通过设备驱动传输的,在dev/input/目录下有几个设备文件eventX。 其中event0对应的就是触摸屏,当触摸屏的驱动被挂载后,驱动程序就会 2020-11-20 Android
Android-SharedPreferences简析 SharedPreferences是系统提供的一种简易数据持久化的手段,适合单进程、小批量的数据存储与访问。以键值对的形式存储在xml文件中。文件存储路径为data/data/package_name/shared_prefs/目录。 源码解析 获取SharedPerferences对象 获取方法从getSharedPreferences(name,mode)开始,此时就需要去加载对应name 2020-11-18 Android
Android9.0源码编译记录 下述操作系统均为 Manjaro 20.02。编译源码版本为Android 9.0. 内核版本为goldfish-4.14 Android源码编译下载源码编译配置123456789#在ArchLinux下需要主动配置export LC_ALL=C#在 /usr/lib/locale 目录下生成C.UTF-8文件夹locale_gen#在Ubuntu下 不需要执行改操作 编译环境ArchLinu 2020-11-11 源码
Android布局优化-AsyncLayoutInflater简析 布局加载过程中存在两个耗时点: 布局文件读取慢,涉及IO操作 根据<tag>创建View慢(createViewFromTag()),使用反射的方式创建View。布局嵌套层数越多,控件个数越多,反射的次数就会越多。 当XML文件过大、嵌套过深时,就会导致页面发生卡顿甚至ANR。 解决方案有两种: 直接解决:不使用IO操作以及反射 侧面缓解:把耗时操作放到子线程,等待加载完毕返回 2020-11-02 Android
Android硬件加速 软硬件绘制的分歧点绘制过程入口位于ViewRootImpl.performDraw()中 123456789101112131415//viewRootImpl.java private void performDraw() { ... try { //调用draw()执行实际的绘制工作 boolean 2020-10-27 Android
Android性能优化-LeakCanary LeakCanary主要用来进行内存泄漏检测,并且可以直观的展示泄漏的路径 如何使用1234dependencies { // debugImplementation because LeakCanary should only run in debug builds. debugImplementation 'com.squareup.leakcanary:leakcanary- 2020-10-14 Android
Android动画-属性动画 对作用对象进行了扩展,可以对任何对象做动画,甚至可以没有对象。 1.与View动画进行比较 View动画的作用对象只能是View,属性动画可以作用于所有Java对象 View动画并没有改变View的属性,只是改变了View的视觉效果,并不具有交互性(例如:无法响应动画后的点击事件。);属性动画是真正的对View的属性进行了修改,可以方便后续的交互操作。 View动画的效果比较单一,只能实现一 2020-10-12 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