_小马快跑__社区达人页

个人头像照片
_小马快跑_
已加入开发者社区580

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
初入江湖
初入江湖

成就

已发布62篇文章
0条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
  • Kotlin
  • Android开发
擅长领域
技术认证

暂时未有相关云产品技术能力~

专注于Android开发领域,8年开发经验,CSDN博客专家认证。曾就职于58、滴滴等公司,目前就职于作业帮,负责移动端业务开发。

暂无精选文章
暂无更多信息

2023年04月

  • 04.22 00:17:36
    发表了文章 2023-04-22 00:17:36

    Android Path测量工具:PathMeasure

    Android Path测量工具:PathMeasure
  • 04.22 00:16:07
    发表了文章 2023-04-22 00:16:07

    android自定义View&自定义ViewGroup(下)

    本篇来看看自定义ViewGroup
  • 04.22 00:14:30
    发表了文章 2023-04-22 00:14:30

    Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流

    **本文仅用于学习利用LruCache、DiskLruCache图片缓存策略、实现瀑布流和Matix查看大图缩放移动等功能,如果想用到项目中,建议用更成熟的框架,如[glide]
  • 04.22 00:12:39
    发表了文章 2023-04-22 00:12:39

    Android使用磁盘缓存DiskLruCache

    不同于LruCache,LruCache是将数据缓存到内存中去,而DiskLruCache是外部缓存,例如可以将网络下载的图片永久的缓存到手机外部存储中去,并可以将缓存数据取出来使用,DiskLruCache不是google官方所写,但是得到了官方推荐
  • 04.22 00:10:55
    发表了文章 2023-04-22 00:10:55

    Android Webview的一些使用总结和遇到过得坑

    WebView 用来显示网页的一个View,它使用WebKit渲染引擎显示web页面,可以加载在线的或者本地的html页面,WebView可以对页面进行一系列操作,如历史页面的向前、向后,放大和缩小,执行文本搜索,与JS交互等等
  • 04.22 00:08:32
    发表了文章 2023-04-22 00:08:32

    Android Canvas之Path操作

    Android Canvas之Path操作
  • 04.22 00:06:41
    发表了文章 2023-04-22 00:06:41

    Android 属性动画Property Animation(中)

    ValueAnimator指定整形、浮点型或者颜色值作为动画值,在一定时间内平滑过渡。可以通过ofInt(),ofFloat(),或ofObject()来或得一个ValueAnimator
  • 04.22 00:05:46
    发表了文章 2023-04-22 00:05:46

    Android仿QQ侧滑菜单

    Android仿QQ侧滑菜单
  • 04.22 00:04:18
    发表了文章 2023-04-22 00:04:18

    Gradle | 全局配置、Log开关控制、Build Variant、meta-data等配置

    Gradle是一个先进的构建系统,也是一个允许通过插件创建自定义构建逻辑先进的构建工具。
  • 04.22 00:00:59
    发表了文章 2023-04-22 00:00:59

    Android异步消息处理机制之Handler、Looper、Message

    因为Android UI线程是线程不安全的,在子线程中更新UI会直接程序崩溃,另外当UI线程需要执行一个比较耗时的操作的话(IO操作,网络通信等),若是执行时间超过5s,程序会直接ANR,为了解决上述问题,可以使用异步消息处理机制[Handler]
  • 04.22 00:00:04
    发表了文章 2023-04-22 00:00:04

    Android高仿QQ小红点

    Android高仿QQ小红点
  • 04.21 23:58:14
    发表了文章 2023-04-21 23:58:14

    android自定义View&自定义ViewGroup(上)

    自定义View&自定义ViewGroup
  • 04.21 23:57:28
    发表了文章 2023-04-21 23:57:28

    Android View滑动相关的基础知识点

    *本文涉及到的知识点:MotionEvent、ViewConfiguration、VelocityTracker 、GestureDetector、scrollTo、scrollBy、Scroller、OverScroller*
  • 04.21 23:56:45
    发表了文章 2023-04-21 23:56:45
  • 04.21 23:55:49
    发表了文章 2023-04-21 23:55:49

    Android使用RecycleView实现魅族手机通讯录界面

    本文主要是通过模仿魅族通讯录,学习一下RecycleView的基本用法
  • 04.21 23:52:45
    发表了文章 2023-04-21 23:52:45

    Android开启多进程及进程间通信的几种方式

    开启多进程及进程间通信的几种方式
  • 04.21 23:51:54
    发表了文章 2023-04-21 23:51:54

    Android数据库Sqlite的基本用法及升级策略

    SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
  • 04.21 23:51:09
    发表了文章 2023-04-21 23:51:09

    Android内存缓存LruCache源码解析

    内存缓存,使用强引用方式缓存有限个数据,当缓存的某个数据被访问时,它就会被移动到队列的头部,当一个新数据要添加到LruCache而此时缓存大小要满时,队尾的数据就有可能会被垃圾回收器(GC)回收掉,LruCache使用的LRU(Least Recently Used)算法,即:<strong>把最近最少使用的数据从队列中移除,把内存分配给最新进入的数据。</strong>
  • 04.21 23:49:44
    发表了文章 2023-04-21 23:49:44

    Android多线程之IntentService

    IntentService继承自Service,所以IntentService也是四大组件之一,IntentService内部封装了HandlerThread线程 (只有一个线程) 来按顺序处理异步任务
  • 04.21 23:48:23
    发表了文章 2023-04-21 23:48:23

    Android 编写一个带进度条的Webview

    用Webview加载一个网页时,如果加载时间长,界面会一直空白,体验不太好,所以加个进度条更好看一下
  • 04.21 23:47:07
    发表了文章 2023-04-21 23:47:07
  • 04.21 23:46:20
    发表了文章 2023-04-21 23:46:20

    Android自定义View工具:Paint&Canvas(一)

    本文主要讲的是自定义View时我们经常用到的Canvas和Paint,像平时画画一样,我们需要画布和画笔,而Canvas就是画布,Paint就是画笔
  • 04.21 23:45:26
    发表了文章 2023-04-21 23:45:26

    Android本地存储的几种方式

    Android提供了多种选择来保存永久性的数据,根据不同的需求来使用不同的保存方式
  • 04.21 23:44:30
    发表了文章 2023-04-21 23:44:30

    Android 采用AOP方式封装6.0权限管理

    6.0运行时申请权限已经是一个老生常谈的内容了,最近项目TargetSDKVersion升到23以上,所以我们也需要做权限管理
  • 04.21 23:42:21
    发表了文章 2023-04-21 23:42:21

    Android | 通过WindowInsetsController设置系统栏颜色、Behavior、显示隐藏等

    两种方式可以引入`WindowInsetsController`,一种直接通过`API`的`val controller = window.decorView.windowInsetsController`获取,注意该方法在`API30`及以上才有
  • 04.21 23:41:30
    发表了文章 2023-04-21 23:41:30

    Android | 深入理解View.post()获取宽高、Window加载View原理

    深入理解View.post()获取宽高、Window加载View原理
  • 04.21 23:40:39
    发表了文章 2023-04-21 23:40:39

    Android 补间动画及动画组合AnimationSet常用方法整理

    `Android`常用的四种补间动画分别为`RotateAnimation`、`ScaleAnimation`、`TranslateAnimation`、`AlphaAnimation`,他们的父类为`Animation`
  • 04.21 23:39:38
    发表了文章 2023-04-21 23:39:38

    Android仿淘宝、京东Banner滑动查看图文详情

    本文基于 `ViewPager2` 实现的 `Banner` 效果,进而实现了仿淘宝、京东`Banner`滑动至最后一页时继续滑动来查看图文详情的效果。
  • 04.21 23:38:39
    发表了文章 2023-04-21 23:38:39

    Android 封装一个通用的PopupWindow

    `PopupWindow`这个类用来实现一个弹出框,可以使用任意布局的`View`作为其内容,这个弹出框是悬浮在当前`Activity`之上的,一般`PopupWindow`的使用
  • 04.21 23:37:41
    发表了文章 2023-04-21 23:37:41

    Android 性能优化篇之SharedPreferences使用优化

    `SharedPreferences(以下简称SP)`是Android本地存储的一种方式,是以`key-value`的形式存储在`/data/data/项目包名/shared_prefs/sp_name.xml`里
  • 04.21 23:36:50
    发表了文章 2023-04-21 23:36:50

    Android | Fragment.setUserVisibleHint()懒加载过时问题优化

    Fragment.setUserVisibleHint()懒加载过时问题优化
  • 04.21 23:35:18
    发表了文章 2023-04-21 23:35:18

    一起来学字节码插桩:ASM Tree API

    `ASM`是一个通用的`Java字节码操作和分析框架`。它可用于`修改现有类`或`直接以二进制形式动态生成类`。`ASM`提供了一些常见的字节码转换和分析算法,可以根据这些算法构建定制的复杂转换和代码分析工具。
  • 04.21 23:34:13
    发表了文章 2023-04-21 23:34:13

    一起来学字节码插桩:从分析class文件结构开始

    `Java` 能做到 `一次编译,到处运行`,主要就是靠 `class字节码` 文件,也就是 `java` 文件经过编译之后 `.java -> .class`,然后再被` JVM` 虚拟机加载。其实,不仅是 `java` 语言,只要是符合规则的 `class` 字节码文件,都可以被 `JVM` 加载
  • 04.21 23:32:59
    发表了文章 2023-04-21 23:32:59

    Java线程基础知识点整理

    - 进程是资源分配的最小单位,线程是`cpu`调度的最小单位。 - 进程可以看做独立应用,而线程不能。一个程序会产生一个进程,而一个进程包含一个或多个线程。 - 进程间是相互隔离的,线程可以共享进程内的资源
  • 04.21 23:32:08
    发表了文章 2023-04-21 23:32:08

    JUC系列学习(六):ReentrantReadWriteLock的使用及源码解析

    `ReentrantReadWriteLock`是一种读写锁,跟`ReentrantLock`一样也是实现了`Lock`,区别在于`ReentrantLock`是独占锁,同一时刻只能有一个线程持有锁,`ReentrantLock`在某些场景下可能会有并发性能的问题。而**ReentrantReadWriteLock是独占锁(写锁)、共享锁(读锁)可以同时存在的一种读写锁,在读操作远大于写操作的场景中,能实现更好的并发性**。当读锁存在时,其他线程仍然可以获取读锁并进行读操作,但是不能获得写锁进行写操作;当写锁存在时,其他线程的读锁、写锁都是不允许的。
  • 04.21 23:31:16
    发表了文章 2023-04-21 23:31:16

    JUC系列学习(五):CountDownLatch、Semaphore、CyclicBarrier的使用及源码解析

    CountDownLatch、Semaphore、CyclicBarrier的使用及源码解析
  • 04.21 23:30:25
    发表了文章 2023-04-21 23:30:25

    Android中Callable、Future、FutureTask的概念以及几种线程池的使用

    在开始介绍线程池之前,先来介绍下`Callable`和`Future`的概念,众所周知,`Android`中实现多线程的方式有两种,实现`Runnable`接口或者继承一个`Thread`,但是这两种方式都有一个缺点:在任务执行完成之后没有返回结果,所以在`Java 1.5`之后,出现了`Callable`和`Future`,通过他们构建的线程,可以在线程执行完成之后得到返回结果。
  • 04.21 23:29:21
    发表了文章 2023-04-21 23:29:21

    JUC系列学习(四):线程池阻塞队列BlockingQueue及其相关实现ArrayBlockingQueue、LinkedBlockingQueue

    线程池阻塞队列BlockingQueue及其相关实现ArrayBlockingQueue、LinkedBlockingQueue
  • 04.21 23:28:24
    发表了文章 2023-04-21 23:28:24

    JUC系列学习(三):ReentrantLock的使用、源码解析及与Synchronized的异同

    `ReentrantLock`同`Synchronized`一样可以实现线程锁的功能,同样具有可重入性,除此之外还可以实现公平锁&非公平锁,其底层是基于`AQS`框架实现的。
  • 04.21 23:27:21
    发表了文章 2023-04-21 23:27:21

    JUC系列学习(二):AbstractQueuedSynchronizer同步器框架及相关实现类

    在并发编程中,我们经常用到的是`synchronized`和`ReentrantLock`。其中,`synchronized`是`jvm`内置锁,而`ReentrantLock`位于`java.util.concurrent`包下(以下简称`JUC`),`ReentrantLock`是基于`AbstractQueuedSynchronizer`(以下简称`AQS`)同步器框架实现的,本文主要来介绍`AQS`的内部实现及在`JUC`中基于`AQS`实现的相关类。
  • 04.21 23:26:24
    发表了文章 2023-04-21 23:26:24

    JUC系列学习(一):线程池Executor框架及其实现ThreadPoolExecutor

    `Executor` 框架将任务的提交与任务的执行**解耦**了。
  • 04.21 23:23:14
    发表了文章 2023-04-21 23:23:14

    Android Jetpack系列之MVI架构

    在之前介绍`MVVM`的文章中,介绍了常用的`MVC、MVP、MVVM`架构及其对`MVVM`的封装使用,其中`MVVM`的主旨可以理解为数据驱动:`Repository`提供数据,`ViewModel`中发送数据,`UI层`使用的`LiveData`订阅数据,当有数据变化时会主动通知`UI层`进行刷新。
  • 04.21 23:22:06
    发表了文章 2023-04-21 23:22:06

    Android Jetpack系列之MVVM使用及封装(续)

    `MVC`、`MVP`、`MVVM`架构及其对`MVVM`的封装使用,其中`MVVM`的主旨可以理解为数据驱动:`Repository`提供数据,`ViewModel`中发送数据,`UI层`使用的`LiveData`订阅数据,当有数据变化时会主动通知`UI层`进行刷新。接下来继续讨论`LiveData`的局限性以及`google`推荐的`UI`层订阅数据方式
  • 04.21 23:20:59
    发表了文章 2023-04-21 23:20:59

    Android Jetpack系列之DataStore

    `Jetpack DataStore` 是一种改进的新数据存储解决方案,允许使用**协议缓冲区**存储键值对或类型化对象。`DataStore` **以异步、一致的事务方式存储数据,克服了 SharedPreferences(以下统称为SP)的一些缺点**。`DataStore`基于`Kotlin`协程和`Flow`实现,并且可以对`SP`数据进行迁移,旨在取代`SP`
  • 04.21 23:20:08
    发表了文章 2023-04-21 23:20:08

    Android Jetpack系列之ViewModel

    ViewModel的定义:**ViewModel旨在以注重生命周期的方式存储和管理界面相关的数据**。ViewModel本质上是视图(View)与数据(Model)之间的桥梁,想想以前的MVC模式,视图和数据都会写在Activity/Fragment中,导致Activity/Fragment过重,后续难以维护,而ViewModel将视图和数据进行了分离解耦,为视图层提供数据。
  • 04.21 23:19:08
    发表了文章 2023-04-21 23:19:08
  • 04.21 23:17:50
    发表了文章 2023-04-21 23:17:50

    Android 基于Jetpack LiveData实现消息总线

    在Android开发中,跨页面传递数据(尤其是跨多个页面传递数据)是一个很常见的操作,可以通过Handler、接口回调等方式进行传递,但这几种方式都不太优雅,**消息总线**传递数据的方式相比更优雅。
  • 04.21 23:16:34
    发表了文章 2023-04-21 23:16:34

    Android Jetpack系列之LiveData

    **LiveData是一种可观察的数据存储类**。LiveData 具有生命周期感知能力,遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的Observer,非活跃状态下的Observer不会受到通知。
  • 04.21 23:15:28
    发表了文章 2023-04-21 23:15:28

    Android Jetpack系列之Lifecycle

    `Lifecycle`可以让某一个类变成`Activity`、`Fragment`的生命周期观察者类,监听其生命周期的变化并可以做出响应。`Lifecycle`使得代码更有条理性、精简、易于维护。
  • 04.21 23:13:31
    发表了文章 2023-04-21 23:13:31

    Kotlin | 高阶函数reduce()、fold()详解

    在 `Kotlin` 中,`reduce()` 和 `fold()` 是函数式编程中常用的高阶函数。它们都是对集合中的元素进行聚合操作的函数,将一个集合中的元素缩减成一个单独的值。它们的使用方式非常相似,但是返回值略有不同
  • 发表了文章 2023-04-22

    Android Path测量工具:PathMeasure

  • 发表了文章 2023-04-22

    android自定义View&自定义ViewGroup(下)

  • 发表了文章 2023-04-22

    Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流

  • 发表了文章 2023-04-22

    Android使用磁盘缓存DiskLruCache

  • 发表了文章 2023-04-22

    Android Webview的一些使用总结和遇到过得坑

  • 发表了文章 2023-04-22

    Android Canvas之Path操作

  • 发表了文章 2023-04-22

    Android 属性动画Property Animation(中)

  • 发表了文章 2023-04-22

    Android仿QQ侧滑菜单

  • 发表了文章 2023-04-22

    Gradle | 全局配置、Log开关控制、Build Variant、meta-data等配置

  • 发表了文章 2023-04-22

    Android异步消息处理机制之Handler、Looper、Message

  • 发表了文章 2023-04-22

    Android高仿QQ小红点

  • 发表了文章 2023-04-21

    android自定义View&自定义ViewGroup(上)

  • 发表了文章 2023-04-21

    Android View滑动相关的基础知识点

  • 发表了文章 2023-04-21

    Android本地存储之SharedPreferences源码解析

  • 发表了文章 2023-04-21

    Android使用RecycleView实现魅族手机通讯录界面

  • 发表了文章 2023-04-21

    Android开启多进程及进程间通信的几种方式

  • 发表了文章 2023-04-21

    Android数据库Sqlite的基本用法及升级策略

  • 发表了文章 2023-04-21

    Android内存缓存LruCache源码解析

  • 发表了文章 2023-04-21

    Android多线程之IntentService

  • 发表了文章 2023-04-21

    Android 编写一个带进度条的Webview

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息