Summary Conventional Commits 规范是在提交消息之上建立的轻量级约定。它提供了一套简单的规则来创建明确的提交历史记录,从而简化了基于此的自动化工具的编写。该约定与语义化版本控制(SemVer) 相契合,通过在提交消息中描述新增功能、修复和重大变更来实现。 Structure 一个规范的 Commit Message 分为三个部分:标题 (Header)、正文 (Body) 和 页脚 (Footer)。 12345<type>[optional scope]: <description> // Header[optional body] //
自定义View是一个综合的技术体系,他涉及View的层次结构,事件分发机制和View的工作原理等技术细节. 自定义View总体可以分为四类 继承View重写onDraw方法 继承ViewGroup派生特殊的Layout 继承特定的View(比如TextView) 继承特定的ViewGroup(比如LinearLayout) 注意事项 **让View支持wrap_content: **直接继承View或ViewGroup的控件要在onMeasure中对wrap_content做特殊处理. 如果有必要,让你的View支持padding: 继承View的控件在draw方法中处理padding,
KFC疯狂星期四 1.探究Activity 在Activity中使用Toast 1234val button3 = findViewById<Button>(R.id.button3) button3.setOnClickListener { Toast.makeText(this, "ThirdActivity", Toast.LENGTH_SHORT).show() } ViewBinding的使用 在build.gradle.kts导入ViewBinding 在活动中导入自动生
1.变量 val:不可变的变量 var:可变的变量 12345fun main(){ val a=10 // var a: Int=10 println("a=$a")} 2.函数 12fun largerNumber(num1: Int, num2: Int) = max(num1, num2)// 只有一行代码时可以不写函数体,类型推导机制让我们不必声明返回类型 3.函数的执行语句 🔹 if语句 if具有返回值,返回值就是if语句中最后一行代码的返回值 1fun largerNumber(num1: Int, num2
Android应用开发特色 四大组件:活动(Activity),服务(Service),广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。 引入布局 12345@Overrideprotected void onCreate(Bundle savedInstanceState){ super.onCreate(saveInstanceState); setContentView(R.layout.hello_world_layout);//引入布局} 1234R.string.app_name//字符串引用
注释 单行注释 1// 这是一个单行注释 多行注释 123/* 这是一个多行注释 */ 文档注释 123/** * 这是一个文档注释 */ 注意: 文档注释一般是写在方法和类的上面. 基本数据类型 数据类型 (Data Type) 字节 (Bytes) 位数 (Bits) 默认值 取值范围 / 说明 byte 1 8 0 -128 到 127 short 2 16 0 -32768 到 32767 int 4 32 0 -2^31 到 2^31 - 1 long 8 64 0L -2^63 到 2^63 - 1 float 4 32 0.0f 单精度
在Android应用开发中,客户端(Client)与服务端(Server)是时常被提及的概念,通常来说"客户端指的是用户直接交互的那个Android应用程序本身,而服务端则是为客户端提供数据,计算或存储服务的远程计算机系统".但我本人认为其实这种表述并不是特别准确,以下是我的一些分析与见解. 客户端(Client) 1.定义 : 在Android开发中,客户端其实是你安装在手机平板上的那个由apk文件运行的应用程序,通俗点说你手机上进行UI交互的App.它是用户界面的提供者,负责显示信息,接收用户输入并根据需要向远程服务端或应用内其他组件发起请求. 2.功能 : 用
在 Android 开发中,我们经常需要在后台执行耗时操作,以避免阻塞主线程(UI 线程),从而导致应用无响应(ANR)。传统的做法是使用 Thread 类,但 Thread 的管理开销较大,包括线程的创建、销毁和调度。当并发任务较多时,频繁地创建和销毁线程会消耗大量的系统资源,甚至可能导致 OOM(Out Of Memory)错误。 ExecutorService 接口(及其父接口 Executor)是 Java 并发包 java.util.concurrent 中的核心组件,它提供了一种更高级、更灵活的方式来管理和执行并发任务。它将任务的提交和任务的执行解耦,允许我们使用线程池来管理线程,
作为一个 Android 开发初学者,每当别人提到“接口”这个词时,我内心总会毫不在意地想:“接口?不就是 implements 一下就完事了吗?”然而,真正开始做项目后才发现,原来接口的使用远不止定义几个方法那么简单。很多关于接口的应用技巧和设计思想,在实际开发中常常被我忽略。你是否也曾遇到过类似的情况呢?让我们一起来深入探讨一下吧! 一.通过接口使用实现类的对象 通过接口使用实现类的对象体现的是多态的理念,他的核心是面向接口编程.实现类必须实现接口中定义的所有抽象方法(除非该类是抽象类). 基本语法结构 123接口名 变量名 = new 实现类构造器();List<String
很多Android开发小白刚开始都不明白书上调用接口和回调的区别,简单来说“调用接口”是一个非常宽泛的术语,它可以指很多情况,而“回调”是一种特定类型的接口调用,它发生在特定的设计模式和场景下。 让我们来详细区分一下: 什么是"调用接口" 在Android开发中,"调用接口"通常包括两种情况: 调用某个类实现的接口方法:当一个类A实现了接口B时,你可以通过接口B的引用来调用A中实现的方法.这也体现出了面向对象里面的多态的特点. 例子: List是一个接口,ArrayList实现了该Llst.当你写List<String>myList =