Wxy's Blog
  • 首页
  • 归档
  • 标签
  • 关于
  • 友链
  •   
  •   
不因虚度年华而悔恨,不因碌碌无为而羞愧

Android-性能监控

线下分析AS ProfilerSystrace adbLeakCanary/MAT线上统计MatrixDoreamonKit

2020-11-20
性能优化

Android-SharedPreferences简析

SharedPreferences是系统提供的一种简易数据持久化的手段,适合单进程、小批量的数据存储与访问。以键值对的形式存储在xml文件中。文件存储路径为data/data/package_name/shared_prefs/目录。 源码解析 获取SharedPerferences对象 获取方法从getSharedPreferences(name,mode)开始,此时就需要去加载对应name

2020-11-18
Android

Android系统启动过程

2020-11-12
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
1…678910…12

搜索

Hexo Fluid