自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 suspendCancellableCoroutine 和 withTimeoutOrNull 的协同工作机制

提供可取消的挂起协程能力,通过注册取消时的清理逻辑。当外部触发取消(如超时、父协程取消)时,自动执行清理并抛出。在指定超时时间(如 2000ms)后,若协程未完成,会发送取消信号。与配合时,能立即终止挂起状态。null。

2025-04-11 15:46:53 154

原创 onUserLeaveHint()

③如果用户点击通知栏消息,导致当前 Activity 失去焦点,③如果系统因内存不足回收 Activity,或屏幕旋转导致重建,(如银行 App 检测到用户按 Home 键,自动模糊界面)④如果当前 App 启动了一个。(但不会销毁 Activity)。(记录用户主动退出的时间点)返回桌面时,系统会调用。(用户主动退出时暂停)

2025-04-08 14:07:05 146

原创 第一行代码 第三版 Kotlin部分笔记(5)

上述代码只是一种示例写法。整个委托属性的工作流程就是这样实现的,现在当我们给MyClass的p属性赋值时,就会调用Delegate类的setValue()方法,当获取MyClass中p属性的值时,就会调用Delegate类的getValue()方法。另外,在默认情况下,所有的泛型都是可以指定成可空类型的,这是因为在不手动指定上界的时候,泛型的上界默认是Any?一个泛型类或者泛型接口中的方法,它的参数列表是接收数据的地方,因此可以称它为in位置,而它的返回值是输出数据的地方,因此可以称它为out 位置。

2025-04-02 17:38:08 559

原创 RxJava2使用例子(数据增删改查)

RxJava2的详细介绍可阅读是 RxJava2 中一个非常重要的操作符,它用于将一个包装成一个Observable(或其他响应式类型,如SingleMaybe:将一段同步代码(通常是耗时操作,如数据库访问、网络请求)包装成响应式流。:自动捕获Callable中抛出的异常,并通过onError传递给订阅者。:只有在被订阅时才会执行Callable中的代码(冷 Observable 特性)。Callable是一个函数式接口,只有一个方法。,当被订阅时会发射的返回值。如果不使用。

2025-03-27 13:55:13 866

原创 RFCOMM

RFCOMM(Radio Frequency Communication Protocol)是蓝牙协议栈中的核心协议之一,用于模拟传统串口通信(RS-232),支持基于流的可靠数据传输。I bt_stack: RFCOMM connection closed, reason=19 # 本地关闭(19=PORT_CLOSED):通过 SDP(Service Discovery Protocol)查询对端设备的 RFCOMM 服务通道号(Channel Number)。

2025-03-25 10:30:36 913

原创 RFCOMM状态通过日志怎么查看分析

1. D bt_rfcomm: PORT_StartInd: handle=5, bd_addr=11:22:33:44:55:66 # 对端请求连接。2. D bt_rfcomm: rfc_mx_sm_state_opening -> rfc_mx_sm_state_configure # 状态切换。D bt_rfcomm: rfc_mx_sm_state_opening -> rfc_mx_sm_state_configure # 状态切换。步骤 3 显示连接成功,但步骤 5 出现缓冲区溢出。

2025-03-25 10:19:37 907

原创 RFCOMM、HFP 和 A2DP

语音带宽较窄(通常 8kHz/16bit,单声道),适合通话。,用于在两个设备之间建立虚拟的串行通信通道(类似有线串口)。是许多蓝牙配置文件(如 HFP、SPP)的底层传输基础。蓝牙耳机与手机的通话控制(HFP 基于 RFCOMM)。,用于将手机的高质量音频(如音乐)传输到耳机/音箱。支持音频编解码(如 SBC、AAC、aptX)。高带宽(44.1kHz/16bit,立体声)。提供简单的流式数据传输(类似 TCP)。蓝牙串口设备(如打印机、传感器)。(与 HFP 的传输层不同)。(但设备可同时支持)。

2025-03-25 10:12:56 371

原创 HandlerThread 运用

1、初始化一个USB检测的子线程(此线程一直活跃,不用每调用一次方法start一次)2、子线程中运行的逻辑。

2025-03-12 09:19:00 207

原创 日志打印是否为I帧和配置帧

【代码】日志打印是否为I帧和配置帧。

2025-02-10 20:09:00 70

原创 设置Activity为透明主题

【代码】设置Activity为透明主题。

2024-12-26 10:47:28 102

原创 H264解码

【代码】H264解码。

2024-12-13 15:25:37 80

原创 python处理excel转换成xml文件(翻译文言)

这个声明对于Python 2非常重要,因为在Python 2中,默认的源文件编码是ASCII。DOM(Document Object Model)是一个跨平台和语言独立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式,DOM操作通常涉及构建一个树形结构,然后通过这个结构来读取或修改XML文档的内容。如果你使用的是 Python 3,并且你的系统中同时安装了 Python 2 和 Python 3,可能需要使用。这是DOM树中的根节点,它包含了所有的其他节点。: 代表XML文档中的一个元素。

2024-12-04 14:30:52 1096

原创 Atomic

这个包提供了一系列原子类,这些类用于实现不可变对象和基本操作的原子性。:由于其原子操作,原子类可以安全地在多线程环境中使用,而不需要显式的同步代码。:原子类的操作会自动处理内存可见性问题,确保其他线程能够看到最新的更新值。这些原子类在多线程环境中非常有用,可以简化代码,提高性能,并减少并发问题。)相比,原子类通常更高效,因为它们避免了线程上下文的切换和同步开销。这些操作都是原子的,即它们在执行过程中不会被其他线程中断。:这些原子类提供了一系列原子操作,如增加(是一个 Java 并发库中的包,位于。

2024-08-30 14:08:06 348

原创 车载蓝牙笔记

车载蓝牙

2024-05-28 15:47:22 211

原创 js微博多次拉黑多名用户

【代码】js微博多次拉黑多名用户。

2024-03-21 14:19:39 231

原创 js发微博

【代码】js发微博。

2024-03-21 14:17:39 277 4

原创 js自动多次转发微博

【代码】js自动多次转发微博。

2024-03-18 10:19:34 882 6

原创 js微博评论(F12)

【代码】js微博评论(F12)

2024-03-18 10:17:04 533

原创 同步图片转起来动画

【代码】同步图片转起来动画。

2024-03-13 11:33:56 132

原创 堆栈跟踪中调用的其他方法中修改正在迭代的 Hashtable

方案:Hashtable改为ConcurrentHashMap。

2024-03-06 17:10:40 240

原创 查看当前电脑的 User-Agent

User-Agent String.com: 访问 https://www.useragentstring.com/ ,该网站提供了一个工具栏,您可以从中选择不同的浏览器和操作系统,以查看相应的 User-Agent 字符串。UserAgent.API: 访问 https://useragentapi.com/ ,这个网站提供了一个简单的 API,您可以向它发送 HTTP 请求,以获取当前电脑的 User-Agent 信息。您可以通过访问特定的网站来查看当前电脑的 User-Agent。

2024-02-23 09:42:34 3609

原创 CopyOnWriteArrayList

因为每次写操作都会创建一个新的副本,所以写操作会比较慢,并且可能会导致读操作的线程在某个时间段内看到不一致的数据。这是通过在写操作时创建副本来实现的,并且读操作不会被阻塞。适用于读多写少的场景:CopyOnWriteArrayList适用于读多写少的场景,例如在迭代器遍历集合的同时进行修改操作。它的特点是在进行写操作时,会创建一个新的副本,而不是在原有的数据结构上进行修改。内存消耗较高:由于每次写操作都会创建一个新的副本,所以CopyOnWriteArrayList会消耗较高的内存。

2023-09-04 14:38:13 265

原创 判断当前是否有通话

判断当前是否有通话(正常通话和网络通话)

2023-08-18 09:39:39 192

原创 context.getContentResolver().query()的使用

当使用SQLite数据库进行查询操作时,可以使用选择条件(selection)和选择条件参数(selectionArgs)来过滤结果。在这个例子中,我们将选择条件设置为"age <=?",选择条件参数为"18",这样就能查询到年龄小于等于18岁的学生信息。假设我们有一个名为"students"的表,其中包含以下列:id、name和age。我们想要查询年龄小于等于18岁的学生。数组来传递,占位符会被数组中的元素替代。在上述代码中,我们使用了。方法的第三个参数是选择条件,其中。方法来执行查询操作。

2023-07-17 10:52:40 916

原创 onScrollStateChanged( )

方法来监听滚动状态的变化,并在状态发生变化时执行相应的操作。例如,你可以在滚动状态为空闲时加载更多数据,或者在滚动状态为拖拽时暂停一些操作。是 RecyclerView 的一个回调方法,用于监听滚动状态的变化。它在 RecyclerView 的滚动状态发生变化时被调用。下面是一个示例代码,演示如何使用。通常情况下,你可以使用。

2023-07-16 13:14:13 1159

原创 LocalDate类

LocalDate是Java 8中的一个日期类,它表示一个不包含时间的日期。它提供了许多方法来处理日期,如获取年、月、日等。LocalDate类是不可变的,因此它的实例是线程安全的。这些方法使得处理日期变得更加简单和方便,可以用于各种日期操作和计算。

2023-07-06 11:00:14 430

原创 子线程运行的任务有返回值

在上面的示例中,我们定义了一个实现了Callable接口的MyTask类,其中的call()方法返回一个随机数。通过调用FutureTask的get()方法,我们可以获取子线程的返回值。子线程可以运行具有返回值的任务。你可以通过实现Callable接口的call()方法来定义任务的逻辑,并在任务完成后返回一个结果。请注意,get()方法是一个阻塞方法,意味着它会一直等待子线程的任务完成并返回结果。因此,在调用get()方法之前,最好确保子线程已经完成了任务,以避免主线程被阻塞。

2023-06-29 10:36:24 290

原创 Headset和PBAP的区别

它允许用户通过蓝牙耳机进行通话和音频播放,同时还支持一些基本的操作,如接听/拒接电话、调整音量等。PBAP是一种蓝牙协议,用于在蓝牙设备之间共享电话簿数据。PBAP协议使用户能够从蓝牙设备中访问和管理他们的联系人,而无需直接使用手机。总的来说,Headset协议主要用于音频传输和通话功能,而PBAP协议主要用于联系人信息的同步和访问。它们是两种不同的蓝牙协议,用于不同的功能和用途。Headset和PBAP(Phone Book Access Profile)是两种蓝牙技术协议,它们有不同的功能和用途。

2023-06-17 12:22:17 519

原创 第一行代码 第三版 Kotlin部分笔记(4)

定义:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。(Kotlin 又增加了一个函数类型的概念)定义一个函数类型:->左边的部分就是用来声明该函数接收什么参数的,多个参数之间使用逗号隔开,如果不接收任何参数,写一对空括号就可以了。而->右边的部分用于声明该函数的返回值是什么类型,如果没有返回值就使用Unit,它大致相当于Java中的void。现在将上述函数类型添加到某个函数的参数声明或者返回值声明上,那么这个函数就是一个高。

2023-06-13 17:43:48 284

原创 保护电话号码隐私

因为有时获取到的电话号码是带空格或“-”的格式。

2023-06-09 14:11:52 141

转载 Android获取当前系统日期和时间

/取得当前时间的年月日 时分秒。//月份前面加1,是因为从0开始计算,需要加1操作。// 设置Time Zone资料。// 获得当前系统时间。

2023-06-09 14:00:26 5277

原创 检查内存泄漏的方法

把studio生成的hrof文件导出使用hprof-conv.exe转换 ,注意这里不转换Memory Analyzer无法打开。在Androd Studio里运行程序,在Profiler中查看。使用Memory Analyzer打开转换后的文件。

2023-06-09 13:52:39 102

原创 跟随手指冒心动画

https://download.youkuaiyun.com/download/qq_46279058/87843828

2023-06-01 14:01:13 58

原创 第一行代码 第三版 Kotlin部分笔记(3)

仅为个人笔记。

2023-05-23 17:29:02 409 1

原创 第一行代码 第三版 Kotlin部分笔记(2)

仅为个人笔记。

2023-05-23 13:53:39 713 2

原创 ssh拉代码

命令: ssh-keygen -t rsa -C “邮箱名称”2、初始化自己的用户名和邮箱。1、查看本机ssh公钥。

2023-05-17 11:26:25 290 1

原创 查询通话记录

【代码】查询通话记录。

2023-05-17 10:38:21 288 1

原创 Toast设置背景、字体

【代码】Toast设置背景、字体。

2023-05-17 10:14:51 348 1

原创 android 防连点

【代码】android 防连点。

2023-05-17 09:58:57 319 1

原创 第一行代码 第三版 Kotlin部分笔记(1)

个人阅读《第一行代码 第三版》后做的笔记

2023-05-09 11:37:08 437 1

跟随手指移动的冒心动画

跟随手指移动的冒心

2023-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除