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 010-Editor 用于查看字节码软件,支持各种类型文件解析,dex,resource.arsc 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
WebRTC音频处理模块相关 WebRTC源码基于提交版本4c2f9c9 WebRTC音频处理模块,负责在传输音频时对音频进行一定的处理,例如降噪、增益、回声消除,整体模块代码位于modules/audio_processing。 按照以下模块分别介绍,各模块的功能以及相关配置和源码解析 默认音频处理配置如下: 1234567891011121314AudioOptions options; options.echo_ca 2020-08-14 WebRTC
LeetCode Hot 100 LeetCode 1:两数之和 12345678910111213141516171819class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; Map<Integer,Integer> map = new H 2020-08-03 算法
Java-线程池 基础概念 线程:进程中负责执行的执行单元,一个进程中至少有一个线程,操作系统能够进行调度的最小单位 进程:一个执行中的程序的实例 多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行时根据CPU切换完成,如何切换由CPU确定,因此多线程具有不确定性 线程池: 基本思想是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理,当有线程任务 2019-09-13 Java
Jetpack-Lifecycle简析 Lifecycle简介Google官方提供的一个生命周期感知组件。可以由引用组件自己进行生命周期管理,从而减少内存泄露以及异常的可能性。 让我们自己创建的对象也可以感知到Android组件的生命周期。 核心设计模式观察者模式。 Lifecycle使用示例先构建需要监听生命周期的组件 1234567891011public class LifeCycleComponent implements L 2019-02-15 源码解析
Jetpack-ViewModel简析 源码分析基于androidx版本 ViewModel简介 ViewModel是用来存储和管理Lifecycle创建数据的组件,在配置发生改变或者屏幕旋转时数据仍然不会丢失。ViewModel可以负责组件间的通信,可以高效解决Activity与Fragment的通信问题。 主要的功能还是在非手动关闭以及系统回收条件下进行 Activity/Fragment的数据保存。 具有以下优势: 与UI层 2019-02-15 源码解析
Jetpack-LiveData简析 LiveData简介本质上是一个观察者模式,在Activity/Fragment中实现观察者,LiveData是被观察者,在LiveData存储的数据变更时触发事件。 LiveData还具有生命周期感知能力,可以控制在应用可见时去更新UI,不可见时不执行操作,减少了内存泄露问题。 LiveData示例一般情况下LiveData要配合着ViewModel一起使用,ViewModel负责触发数据更新, 2019-02-15 源码解析
Android - Drawable相关 Drawable简介 Drawable是一种 可以在Canvas上进行绘制的对象,即可绘制物。与View不同,Drawable没有事件和交互的方法。 在实际开发中,Drawable通常被用作View的背景,一般通过XML进行定义,也支持通过代码去实现(例如动画样式的Drawable)。 Drawable是一个抽象类,是所有Drawable的基类。例如常用的ShapeDrawable、Bitmap 2019-01-10 Android
View的事件体系 在Android中任何一个与用户交互或者展示内容的控件都是由View拓展实现的。 View的基础知识View是Android中所有控件的基类,也包括ViewGroup。ViewGroup可以理解为View的组合,内部可以包含很多View以及ViewGroup,通过这种关系就形成了一个View树。 上层的控件主要负责测量与绘制下层的控件,并传递交互事件。 1. View的位置参数1.An 2018-12-25 Android