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
Kotlin-Tips 主要用来记录Kotlin的一些关键概念 Kotlin lazy关键字 lazy用在懒初始化的场景下,在参数不使用时无需进行初始化过程。 123456class Bird(var weight:Double = 0.00,var age:Int = 1,var color:String = "blue"){ val sex : String by lazy{ //内部 2020-10-06 Kotlin
WebRTC-Mediasoup编译记录 下载相关文件 libmediasoupclient webrtc 参考文档compile_webrtc mediasoup doc 编译webrtc1234567891011121314151617181920//编译工具下载git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATh= 2020-09-24 WebRTC
Mac软件清单 电池管理软件bclm-Github AIDente 开发工具Android Studio 3.6.3 https://dl.google.com/dl/android/studio/install/3.6.3.0/android-studio-ide-192.6392135-mac.dmg 2020-09-17 Mac
Android-流量统计 流量统计Android目前提供了两种流量计算方案 TrafficStats NetworkStatsManager 这两种方案有着各自的优缺点与限制,下面简单的记录一下 TrafficStats Android API8后提供的该类,可以获取设备重启以来的流量信息。 12345678public class TrafficStats { public static long g 2020-09-15 Android
Java-AbstractQueuedSynchronizer简介 AQS简介AQS全称为AbstractQueuedSynchronizer,意为抽象队列同步器。 Abstract:抽象类,只实现主要逻辑,其他交由子类实现 Queued:FIFO队列存储数据 Synchronizer:同步 在Lock中,是非常重要的核心组件。AQS是用来构建锁和同步器的框架,使用AQS可以简单且高效构建同步器。我们常见的ReentrantLock、CountdownLat 2020-09-13 Java
Kotlin协程原理 在介绍了大部分概念,现在需要针对这些概念进行详细的说明以及分析。 协程是轻量级的线程 协程概念 非抢占式或协作式的计算机并发调度的实现,程序可以主动挂起或者恢复执行, 避免在异步程序中使用大量的回调,使用阻塞的方式写出非阻塞的代码。 一种全新处理并发的方式,可以在Android平台上简化异步执行的代码。 协程主要用来解决两个问题: 处理耗时任务 保证主线程安全 在后面的原理介绍中,会介绍与 2020-09-04 Kotlin