引子view.setOnClickListener { // 当控件被点击时触发的逻辑 }正是因为 View 对控件点击采用了策略模式,才使得监听任何控件的点击事件变得易如反掌。我有一个愿望。。。如果 View 能有一个可见性监听该多好啊!view.setOnVisibilityChangeListener { isVisible: Boolean -> }系统并未提供这个方法。。。但业
2022-12-13 michael007js 139
synchronized作为java语言中的并发关键词,其在代码中出现的频率相当高频,大多数开发者在涉及到并发场景时,一般都会下意识得选取synchronized。synchronized在代码中主要有三类用法,根据其用法不同,所获取的锁对象也不同,如下所示:修饰代码块:这种用法通常叫做同步代码块,获取的锁对象是在synchronized中显式指定的修饰实例方法:这种用法通常叫做同步方法,获取的锁
2022-12-13 michael007js 60
简介Jetpack的文档库里面是这样介绍的:使用WorkManager API可以轻松地调度那些必须可靠运行的可延期异步任务。通过这些 API,您可以创建任务并提交给WorkManager,以便在满足工作约束条件时运行。WorkManger是Android Jetpack里面的一个重量级组件,它是一个提供异步执行任务的管理框架,会根据系统的版本和应用的状态来选择执行任务的时机。当应用在运行的时候会
2022-12-12 michael007js 166
App Startup库是什么官方的定义App Startup库提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发人员和应用程序开发人员都可以使用App Startup来简化启动顺序并明确设置初始化顺序。App Startup库允许您定义共享单个内容提供程序的组件初始化程序,而不是为您需要初始化的每个组件定义单独的内容提供程序。这可以显着改善应用程序启动时间。为什么App Startu
2022-12-12 michael007js 111
虽说是重学Jetpack,但其实也不尽是,因为有些Jetpack组件之前也没学过。最早开始使用Jetpack组件开发是2019年,当时公司开发的一款产品采用的MVVM架构,其中使用的Jetpack组件包括Paging、LiveData、ViewModel以及Room等,后面到了现在的公司就一直没有怎么使用过。但Jetpack组件作为谷歌的亲儿子项目,而且随着Compose 1.0稳定版的发布,精通
2022-12-12 michael007js 150
介绍两个和滚动定位相关的 CSS 属性:scroll-padding和 scroll-margin在平时开发中,经常会碰到需要快速定位的问题,比如常见的锚点定位<ul> <li><a href="#语法">语法</a></li> <li><a href="#示例">示例&
2022-12-12 michael007js 1336
众所周知,函数节流(throttle)是 JS 中一个非常常见的优化手段,可以有效的避免函数过于频繁的执行。举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库btn.addEventListener('click', _
2022-12-12 michael007js 81
平时工作中很多场合都要用到定时器,比如延迟加载、定时查询等等,但定时器的控制有时候会有些许麻烦,比如鼠标移入停止、移出再重新开始。这次介绍几个借助 CSS 来更好的控制定时器的方法,一起了解一下吧,相信可以带来不一样的体验一、hover 延时触发有这样一个场景,在鼠标停留在一个元素上1s后才触发事件,不满1s就不会触发,这样的好处是,可以避免鼠标在快速划过时,频繁的触发事件。如果是用js来实现,可
2022-12-12 michael007js 107