AI笔记本

2026年以前手搓博客一千多篇。如今 Claw、Cursor、Claude 等 AI Agent 横空出世。只需一句话,AI 就能生成文章、调整格式、润色语言,并一键自动发布。欢迎来到 AI 驱动博客时代 🚀

文章列表

Android Workshop线上活动分享
分享

Android Workshop线上活动分享

Android Workshop线上活动分享前段时间Google发起的一个Android SDK Workshop 线上活动。因为有问答环节,所以参加了并且准备几个问题要提问,希望得到官方的回答。1、活动安排 活动日程:(最终安排请以当天日程为准) 10:00 - 10:10 开场 10:10 - 10:30 Android 的最新进展 10:30 - 10:45 ResourcesLoader

1.7k
Android

Android桌面Launcher3的启动

Android桌面Launcher3的启动SystemServer启动会在startBootstrapServices()方法中启动引导带服务,其中就包括PackageManagerService(这里判断了手机是否是工厂模式)。而包管理服务和接下来要分析的Launcher启动有很大关系。SystemServer启动流程参考《SystemServer系统服务启动》。startOtherServic

3.0k
Kotlin

Kotlin object 关键字详解:对象表达式、对象声明与伴生对象

Kotlin object 关键字详解:对象表达式、对象声明与伴生对象在 Java 里,"匿名内部类""单例""静态成员"是三套各不相同的写法,琐碎且易错。Kotlin 用一个 object 关键字把它们统一了——根据出现位置和是否带名字,分别表达"匿名对象""单例""类级静态成员"三种语义。本文把这三种用法、它们的差异与陷阱一次讲透。参考文档:Kotlin 官方文档 · Object decla

209
分享

LNMP:快速搭建服务器后端环境

LNMP:快速搭建服务器后端环境最初搭建这个站点的时候需要在Linux服务器上安装各种软件,Apache、MySql等等。非常麻烦,就没有像Windows下的XAMPP那样简单易用集成好服务器后端环境的软件呢?有,LNMP!1、LNMPLNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspb

1.6k
泛型
Kotlin

泛型

泛型类型参数化,和Java一样,Kotlin也有泛型。省去类型强转的麻烦,也提供了类型安全方面的保障。1、泛型类定义带泛型参数的类。例:泛型类Type中的值就会根据实际传入的参数类型输出结果:注意:①如果已经将某个变量初始化为一种泛型,就不能再次赋值成其它类型的泛型了:②创建泛型类型的对象直接使用var关键字即可,Kotlin自动进行类型推断。如果一定要指定变量的类型,必须也要指定泛型的类型:正确

2.0k
Kotlin

Kotlin 数据类与密封类详解

Kotlin 数据类与密封类详解在 Java 里,写一个"纯数据"的类要手写一堆 getter/setter/equals/hashCode/toString,写一个"有限取值"的类型又得靠枚举或抽象类加 if-else。Kotlin 为这两类高频场景提供了专门语法:数据类(data class)专治"持有数据"的样板代码,密封类(sealed class)专治"受限分类"的穷尽匹配。本文把两者的

207
枚举
Kotlin

枚举

枚举1、枚举类Kotlin中也有枚举,而且是仅此唯一一个定义比Java“复杂”的结构。Java中定义一个枚举只需要enum关键字,Kotlin中需要enum class两个一起才行。1.1、定义枚举类定义类时用enum软关键字声明这个类是一个枚举类。为什么叫软关键字,因为Kotlin中enum只有和class在一起才有用,其它时候可以作为变量名使用。关键字是不可以作为变量名的,比如class,可以

1.8k
Kotlin

扩展

扩展Kotlin可以对现有的类进行扩展,添加原本没有定义在类中的成员。不仅可以对Kotlin代码进行扩展,只要能编译为Java类,都可以为这个类添加任意扩展。Kotlin巧妙的用了扩展的特性为Java标准类库扩展了很多API方法,方便直接调用。1、扩展函数1.1、定义扩展函数扩展函数的语法如下:fun extensionClass.functionName(params){ body } 例:Ba

1.8k
接口
Kotlin

接口

接口学习一下Kotlin中接口相关的语法,和Java 8差不多。可以包含抽象的方法定义,还可以拥有一些属性,以及非抽象的方法。1、interfaceKotlin中也是用interface定义接口:不需要open关键字修饰接口,实现一个接口如下,使用冒号:,而不是Java中的implement关键字。2、成员变量2.1、接口中定义属性接口中定义的成员变量:接口中的变量不允许初始化赋值。2.2、实现接

1.8k
Kotlin的继承
Kotlin

Kotlin的继承

Kotlin的继承1、超类:Any类似于Java中的Object类,Kotlin也有一个叫Any的超类,是所有类的父类,所有类都默认继承自该类。超类的定义如下,其中定义了三个函数:2、open注意上面的Any类用open修饰,表示该类可以被继承。Kotlin中的类默认都是final的,无法被继承:如果想让类可以被继承,就需要用在定义类的地方用open关键字标识该类可以被继承。3、构造器继承中涉及到

2.1k
View not attached to window manager异常
分享

View not attached to window manager异常

View not attached to window manager异常开发的越多,遇到的问题也就越多。知识的圈子不断扩大,接触到的问题也就越多。1、异常Activity退出后,又进行了Dialog的操作会抛出下面的异常,这个异常比较少见。但是确实暴露出代码逻辑的不严谨,有待强化。2、分析原因根据异常的堆栈,从源码开始看。跳过前面的各种调度,直接从Dialog开始:mWindowManager是

2.2k
类和对象
Kotlin

类和对象

类和对象1、类修饰符介绍类之前,先来讲一下类的修饰符。Java中的类和方法默认都是open的,而在Kotlin中默认都是final。1.1、类属性修饰符如下:定义一个类如下,有的属性能被子类重写,有的被修饰为final:abstract修饰的抽象类通常包含一些没有实现并且必须在子类重写的抽象成员。抽象的属性始终是open的,则无需再用open修饰。如果实现的子类还是open的,那么接口默认是ope

1.9k
分享

Canvas: trying to use a recycled bitmap android.graphics

Canvas: trying to use a recycled bitmap android.graphics又又遇到祖传问题,网上一搜6年前都有这个问题,看来从历史吸取经验教训是最快的成长!1、异常捕获复现很容易:写一个Bitmap,调用Bitmap的recycle()方法将其回收掉,再设置给ImageView。捕获到下面的异常:Process: com.easyicon.learnglide

4.5k
监听系统语言变化
Android

监听系统语言变化

监听系统语言变化监听系统语言变化,有两种方法:一种通过onConfigurationChanged回调,另一种监听系统语言变化相关的广播。1、configChanges在AndroidManifest.xml文件中,对应的Activity节点下添加配置android:configChanges。关于Configure参考《onConfigurationChanged()及屏幕横竖屏锁定》注意只添加

1.9k
Android

Android 获取内存信息全攻略:堆内存、系统内存与进程内存

Android 获取内存信息全攻略:堆内存、系统内存与进程内存内存优化始终是 Android 性能工程的重头戏,而"优化"的前提是"量得到"。但不少同学照着网上的代码一抄,发现拿到的内存值要么只涨不跌、与 Android Studio Profiler 对不上,要么数字大得离谱——根源在于 Android 的"内存"有好几套口径:Java 堆、系统可用内存、进程 PSS、设备物理内存,各自 API

201
Kotlin

标签:label

标签:label标签的格式为任何符号后面跟@:标签@1、循环标签将标签用在循环语句中,返回到标签后的语句继续执行。标签语法参考《Kotlin循环语句》。例:2、函数返回标签kotlin的函数可以嵌套,如果内层函数有return返回,那么通常是直接从最外层的函数返回。2.1、Lambda函数返回如果想只从内部的Lambda函数返回,可以加上标签:return@标签返回到标签处而不是整个函数的返回。还

1.9k
Kotlin

Kotlin循环语句

Kotlin循环语句每门语言都要学一下循环语句,虽然每种语言都有for、while等循环,但总有些各自的特色。1、for循环for循环遍历集合或者数组,使用 in 关键字遍历任何提供迭代器。语法:例:先定义一个数组或集合array:遍历集合array:通常还需要用到索引index,调用集合的withIndex()方法参与循环遍历。例:使用下面的方式遍历for循环,同时获取元素当前索引index和当

2.1k
Kotlin

条件语句:if和when

条件语句:if和whenkotlin有两种条件语句一种是熟知的if条件语句,另一种是新颖的when条件语句。开发过程中更推荐使用when替代层层if判断,代码会更简洁。1、ifif条件参数类型为布尔类型,只有true和false两种。if...else...常见的可以简写成:可以多重嵌套if...else if...else...语句条件判断除了简单的直接用Boolean条件,还能使用关键字 in

1.7k
Kotlin基本类型
Kotlin

Kotlin基本类型

Kotlin基本类型Kotlin没有基础数据类型,但是封装了6种数值类型,分别是Double、Float、Long、Int、Short、Byte。此外还有字符类型Char。1、NumberKotlin中定义的6中数值类型都继承自Number父类。父类定义如下,定义了7中方法,也就是Kotlin中所有的数值类型都可以调用上面的方法转换。2、常量在《Kotlin基本语法》中介绍了变量,现在了解一下什么

1.9k
字符串模板
Kotlin

字符串模板

字符串模板类似于Java中的String字符串fromat格式化,kotlin也有字符串格式化,但是kotlin还有一套字符串模板替换。用关键字$表示一个变量名或者变量值。1、变量值引用$varName定义一个变量key再定义另一个字符串,加入$关键字str的值就是:keyword is hello2、变量方法调用${varName.fun()}接着上面的例子,调用变量的方法,并替换成字符串内容。

1.7k