人生从来就没什么退路可言,从选择开始就注定了只能向前冲
WebSocket WebSocket
什么是WebSocketWebSocket是一种网络传输协议,可以在单个TCP连接上进行全双工通信,位于OSI模型的应用层. 特点如下: 允许服务端主动向客户端推送数据 在HTTP端口80和443工作,支持HTTP代理和中介 WebSoc
2020-11-27
Dart中的Isolate Dart中的Isolate
基本概念每个Isolate有自己的内存和EventLoop.不同的Isolate只能通过传递消息来进行通信. Dart的Isolate没有内存共享机制,这样设计有一个好处,就是在处理内存分配和回收时,无需加锁,因为仅一个线程,并不会抢占.
2020-11-25
写个简单的短链接服务 写个简单的短链接服务
基本说明短链接服务就是一个将比较长的url转换为比较短的url的功能. 如果要实现一个短链接服务,至少要实现这几个功能: 将较长的url转换为较短的url 访问短链接可以直接访问到原网站/链接 时效性:永久有效/过期机制 统计与效率 如
2020-11-22
Flutter-从Widget导出图片 Flutter-从Widget导出图片
在Android中从View中导出图片,使用的是Canvas + Bitmap. 在Flutter中,同样支持这种功能,使用的是RepaintBoundary 使用RepaintBoundary包装WidgetRepaintBoundary
2020-11-12
Glide原理分析 Glide原理分析
一个图片加载库应该具备的功能 图片下载 各种格式图片编解码 图片显示 缓存 图像处理:圆角,色调,调整大小等等 现在分析下Glide是如何实现这个图片加载库的,先来看一下Glide的主要模型 Glide内部模型TargetGlide可以将
2020-11-03
GC与Reference GC与Reference
引用类型 SoftReference 普通的GC不会回收软引用,只有在即将发生OOM的时候(即最后一次Full GC),如果被引用的对象只有SoftReference指向的引用,才会被回收. WeakReference 当发生GC时,如果
2020-11-02
leakcanary是如何捕获内存泄漏的 leakcanary是如何捕获内存泄漏的
Java中第三方应用如果想判断是否存在内存泄漏,一般都会利用WeakReference + RefercenceQueue的机制去判定. 因为GC之后,理论上会回收掉WeakRefercence对象的内存(如果不存在其他到GCRoot的路径
2020-10-31
leakcanary捕获内存泄漏的时机 leakcanary捕获内存泄漏的时机
leakcannary可以自动监控的内存泄漏有哪些? destroyed Activity对象 destroyed Fragment对象 destroyed fragment中的View对象 cleared ViewModel对象 (Act
2020-10-29
leakcanary的自动初始化 leakcanary的自动初始化
目前v2.5版本,已经无需显式的进行初始化了. 由于Android中ContentProvider的onCreate()会在Application的onCreate()之前执行,因此可以在ContentProvider中进行初始化. 恰好有
2020-10-29
Kotlin中的object Kotlin中的object
Kotlin中object有3种使用场景. 对象表达式window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent
2020-10-29
粗糙的谈一下Kotlin中的协程 粗糙的谈一下Kotlin中的协程
概念协程运行在协程上下文中(CoroutineContext)。 协程上下文包含一个协程调度器(CoroutineDispatcher),它可以将协程限制在一个特定的线程中执行,或者将协程分配到一个线程池中,或者让它不受限制的运行。 Cor
2020-10-29
粗糙的谈一下Kotlin中的CoroutineScope 粗糙的谈一下Kotlin中的CoroutineScope
简单说明CoroutineScope其实定义了协程的生命周期,比如在Activity中启动的协程,在Activity销毁的时候应该要取消. 而GlobalScope则是对应整个APP的生命周期,即使Activity已经销毁,Coroutin
2020-10-29
image_picker的使用 image_picker的使用
简单记录一下image_picker的使用 从相册选择图片 static Future<File> pickImageFromGallery() async { final pickedFile = awai
2020-10-27
Jetpack App Startup库的使用 Jetpack App Startup库的使用
特点 应用启动时进行高性能的初始化 明确定义各种初始化的依赖关系 使用先添加依赖: implementation("androidx.startup:startup-runtime:1.0.0-beta01") 你得为每一个需要初始化的组
2020-10-25
Android微件的简单用法 Android微件的简单用法
即Widget 微件类型 信息微件 集合微件 控制微件 混合微件 限制 手势 微件只能支持以下两种手势: 轻触 纵向滑动 基本步骤 创建AppWidgetProvider的子类 class KToolsAppWid
2020-10-25
Android快捷方式的简单用法 Android快捷方式的简单用法
限制从Android 7.1 开始支持 快捷方式类型 静态 以xml形式配置,并在主Activity中的<meta-data>标签下置顶 Android Studio并不能很好的支持,暂时没找到问题所在 动态 可以随时改变,即
2020-10-25
Android通知的简单用法 Android通知的简单用法
由于不同版本API兼容性问题,我们通常使用NotificationCompact去创建通知. 注册NotificationChannel一般在应用启动的时候注册通知channel: private const val channel
2020-10-25
Kotlin中的泛型 Kotlin中的泛型
概念如果A,B表示类型,f(*)表示类型转换, <= 表示继承关系(如果 A <= B,则表示A是B的子类) 里氏替换原则(LSP) 子类对象可以在程序中替换基类对象,”SOLID”原则中的L就是这个. 协变 如果f(*)是
2020-10-14
1 / 5