自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(145)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android Binder,AIDL跨进程通讯详解与实现,看一遍就懂

1.说到AIDL,就会联想到Binder机制,Binder 是一种进程间通信机制 整个app属于客户端,系统是服务端,他们之间的通讯就是通过IPC交互,中间服务就是serviceSystem 优点:性能,稳定性,安全性 设计:Client/Server/ServiceManager/驱动 实现:AIDL 二、核心代码处1.可以通过AndroidStudio创建:1.1选中......

2021-12-28 19:58:00 3960 1

原创 Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆

代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。已经存在许多种功能各异的代码混淆器。将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如

2021-04-11 11:33:47 2961

原创 android 自定义路由Route模块化路由设计与详解

背景:我们在移动端开发过程,随着业务越来越多,越来越复杂,在架构中会将业务进行剥离和抽取,这样会出现许多业务模块。但是各业务模块又有业务关联,常见的就是Activity之间的跳转。但是,一些大的公司,或者业务线非常多的app大多数采用混合模式,常见的就是H5和app混合,特别是电商商业比较常见。这时候H5通过连接跳转到原生,我们只需要知道原生页面的keyCode,就能和原生一样去访问原生业务。问题:在Activity之间跳转,我们可以用Intent现有的显示和隐式跳转,如果在相同模块类跳转很

2021-02-26 17:17:51 2123 1

原创 Android 两个surfaceView覆盖不显示,视频小窗被遮挡有声音无画面

1.我们在处理连麦中,特别是视频连麦或者视频通话,是一个大的窗口和一个小的窗口,在调试过程中,发现小窗口有声音但是无法正常显示,只有大窗口surfaceView正常显示,是因为部分设备的surfaceView的大窗口口把小窗口遮挡住了。原因是因为surfaceView是独立的window窗口,及时你在layout中设置好显示的层级关闭,但是不受Activity的窗口控制,所以在这种情况,在显示的时候要主动设置,private void initSetSurFaceViewHolder(Surfac

2021-01-13 16:34:44 3357 1

原创 Android 蓝牙/Wi-Fi通信协议之低功率(BLE)蓝牙BluetoothGatt 介绍

BluetoothGatt 是 Android Bluetooth Low Energy (BLE) API 中的核心类,用于与 BLE 设备进行通信。

2025-04-01 09:30:00 838

原创 Android 蓝牙/Wi-Fi通信协议之低功率(BLE)蓝牙MTU 介绍

MTU 表示最大传输单元,即蓝牙设备之间单次通信能够传输的最大字节数。MTU 越大,单次传输的数据量越多,通信效率越高。

2025-04-01 09:15:00 467

原创 Android 蓝牙/Wi-Fi通信协议之:低功耗蓝牙(BLE 4.0+)介绍

介绍:蓝牙通信协议详解1. 蓝牙协议分层Android主要支持**经典蓝牙(Bluetooth Classic)和低功耗蓝牙(BLE)**两种模式:经典蓝牙(BT 2.1/3.0+)低功耗蓝牙(BLE 4.0+)协议栈:GATT(通用属性协议)、ATT(属性协议)、L2CAP(逻辑链路控制)。用途:IoT设备(传感器、手环)、间歇性数据传输。带宽:约100 kbps,功耗极低。

2025-03-28 09:00:40 808

原创 Android 蓝牙/Wi-Fi通信协议之:经典蓝牙(BT 2.1/3.0+)介绍

在 Android 开发中,经典蓝牙(BT 2.1/3.0+)支持多种协议,其中 RFCOMM/SPP(串口通信)、A2DP(音频流传输)和 HFP(免提通话)是最常用的。以下是它们在 Android 中的实现详解:经典蓝牙(BT 2.1/3.0+)协议栈:RFCOMM(串口模拟)、SPP(串行端口协议)、A2DP(音频传输)、HFP(免提协议)。用途:大文件传输、音频设备(耳机/音箱)。带宽:1-3 Mbps,功耗较高。

2025-03-28 09:00:04 942

原创 Java NIO之FileChannel 详解

Java NIO之FileChannel 详解

2025-03-27 10:00:00 876

原创 Java非阻塞I/O(NIO)详解

非阻塞I/O(NIO)是Java中处理高并发网络编程的重要技术,它允许程序在等待I/O操作完成时继续执行其他任务。下面详细介绍Java非阻塞流的使用方法。

2025-03-27 09:30:00 718

原创 Android 低功率蓝牙之BluetoothGattCallback回调方法详解

BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗(BLE)设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是

2025-03-06 19:37:26 793

原创 Android 低功率蓝牙之BluetoothGattDescriptor详解

BluetoothGattDescriptor 是 Android 中用于表示蓝牙低功耗(BLE)设备中 GATT(Generic Attribute Profile)描述符 的类。描述符是 GATT 架构中的一种属性,用于提供关于 特征值(Characteristic) 的附加信息或配置选项。它是 BLE 通信中非常重要的一部分。

2025-03-06 19:36:21 828

原创 Android 低功率蓝牙之BluetoothGattCharacteristic详解

BluetoothGattCharacteristic 是 Android 蓝牙低功耗(BLE)开发中的一个核心类,用于表示 GATT(Generic Attribute Profile)服务中的特征值(Characteristic)。特征值是 BLE 设备之间通信的基本数据单元,通常用于读取、写入或通知数据。

2025-03-06 19:34:13 1319

原创 Android MVI架构模式详解

Android MVI架构模式详解

2025-03-06 17:33:01 780

原创 Rxjava2的介绍与使用(二:操作符介绍)

通过之前的一篇文章,我们已知道了Rxjava2的订阅和观察,可以在项目中简单的使用。但是想做更复杂的数据过滤怎么办?接下来我将礼貌的对这些操作符进行介绍。方便大家后期可以更好的了解和使用。

2024-08-26 09:45:00 620

原创 Rxjava2的介绍与使用(一:详解)

就是观察者到订阅者,观察者可以指定线程的模式,订阅者也可以指定线程的模式。观察者将观察执行操作时,会将状态同步给订阅者。订阅者正常有四个回调,会根据不同的操作符,做对应的操作。Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用-优快云博客通过以上的订阅,我们知道了如何去创建和订阅以及观察,以及常用的合并以及操作符等,有了这些简单的,我们就可以很好的在项目中进行很好的运用。

2024-08-26 09:30:00 941

原创 Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用

flow其实与RxJava比较类似,都是基于流在处理订阅的分发。这个flow也被最新的MVI模式所接受,替换了MVVM中的LiveData。flow又区分冷流和热流。通过上面的分析,不管冷流还是热流以及管道,都有自己的特性。冷热流以及管道可以互相转换也可以转成LiveData所以,大家在用的时候要注意,如果需要注意倒灌可以优先考虑ShareFlow,需要长期订阅用flow注意:但是sateFlow会出现倒灌情况,和LiveData一样,如何规避?其实。

2024-08-17 13:33:15 1477

原创 Android 适配器Adapter全面认识notify介绍与使用

你真的了解Adapter的notify

2024-08-17 13:30:30 998

原创 Android Viewpager2 remove fragmen不生效解决方案

Android Viewpager2 remove fragmen不生效解决方案

2024-07-14 15:22:35 1292

原创 Android TabLayout+ViewPager2如何优雅的实现联动详解

Android开发过程中,我们经常会遇到滑动+导航栏的做法,之前的做法就是我们通过ViewGroup来转动,然后通过大量的自定义来完成,将导航栏item与viewpage滑动,达到业务需求。

2024-07-14 15:19:33 1341

原创 Android kotlin 协程异步async与await介绍与使用

通过以上几个案例,可以发现1.异步如果不在runBlocking模块中进行,或者runBlocking模块外面再包一层,会引起最里面的模块,甚至方法体不在执行2.想要异步执行,必须在runBlocking中对异步结果进行异步,否则达不到异步效果,变成了同步3.整个函数的外面都是一个同步阻塞的,runBlocking一旦执行,下面的代码处于一个等待的状态4.runBlocking中可以继续嵌套runBlocking异步执行模块。

2024-04-25 14:11:53 1292 1

原创 Android 系统应用 pk8签名文件转jks或keystore教程

Android 系统应用 pk8签名文件转jks或keystore教程

2024-03-25 14:57:04 2671

原创 okHttp MediaType MIME格式详解

在okhttp中,请求是通过RequestBody来完成封装,额外的数据封装,RequestBody也可以多层封装,将一些文件等通过RequestBody进行二次封装。我们在做数据上传时,经常会用到Okhttp的开源库,okhttp开源库也遵循html提交的MIME数据格式。我们通过okhttp所有的post提交都是需要指定mime数据格式的,否则导致服务端无法解析等。上面就是常见的MIME格式的封装,大家可以通过这个自己查找。通过上面的介绍,我们知道post提交需要MIME指定的类型。

2024-03-06 15:47:21 1627

原创 Java 数据结构之链表

【代码】Java 数据结构之链表。

2024-03-06 00:06:52 327

原创 Android JNI/NDK入门教程第一章:环境的配置与Demo编译

通过以上步骤,我们已完成了JNI/NDK的搭建与配置完毕,大家可以很清楚的看到so文件的生成整个过程。已基本掌握的JNI的编译与生成整个流程,包括问题的处理基本都有。可以很直观的定义自己的JNI文件。

2024-01-18 13:54:51 1796

原创 Android Room数据库升级Migration解决方案

不可以,即使你表发生了很大的变化,你也不能随便删除之前修改的,如果删除了,会导致之前有很多用户表有升级到最新,导致后期升级上来,丢了中间的表变化,这样早执行Dao的时候,直接crash。在使用Room数据的时候,一定要小心,如果你的数据库发生了变化,一定要及时新增migration,否则时间一长,可能改的面目全非。这个版本号会记录当前表的信息,如果表发生了变化,在初始化表的时候,并没有通过升级版本,修改表结构,就会导致在Dao执行事务的时候报错。在修改表结构,Room也提供了合并的支持。

2024-01-06 12:47:55 2207

原创 Java 语法糖的介绍

"语法糖"并不是Java语言的一部分,而是一种编程技巧。它利用了Java编译器对某些代码结构的优化处理,使得我们的代码看起来更加简洁、易读。虽然这些"糖"并不会改变程序的执行逻辑,但它确实能使我们的代码更加优雅。语法糖是Java编程中的一种强大工具,它可以帮助我们编写更加简洁、优雅的代码。通过了解语法糖的种类和使用方法,我们可以更好地利用这一技巧来提升自己的编程技能。在实践中不断反思和总结经验,积极参与开源项目和社区交流,将使我们在这条甜蜜的诱惑之路上越走越远。

2024-01-01 13:15:41 566

原创 Jenkins在window下配置Android打包配置

Jenkins在window下配置Android打包详解

2023-12-19 11:12:54 933

原创 Android Uri scheme协议file转content

在处理这些资源时,我们可能会遇到不同的Uri协议,如file和content。本文将详细介绍如何从file协议的Uri转换到content协议的Uri,并解释这个转换过程中的关键步骤和注意事项。首先,我们需要了解file和content两种协议的基本概念。file协议的Uri通常以"file://"开头,用于标识本地文件系统上的文件路径。而content协议的Uri则以"content://"开头,用于访问通过内容提供者(Content Provider)暴露的数据。一、了解file和content协议。

2023-12-19 10:29:28 2851

原创 Android 打包配置与输出教程

Android 打包配置与输出教程

2023-11-29 10:30:05 842

原创 Android gradle动态配置不同打包环境参数值

Android gradle动态配置不同打包环境参数值

2023-10-19 14:48:18 725

原创 Android kotlin内联函数(inline)的详解与原理

内联函数很好的配合了程序的解耦工作。解耦就是将复杂的程序或者共用的模块抽取出来,这样也牺牲了一部分性能,考虑到寻址这个问题。但是在kotlin中又通过inline方式,解决了性能问题,同样也带来了空间问题。这就是程序中经典的空间换时间,这个只针对如今内存条向对便宜的时候可以忽略,计算机起步的时候,空间换时间是一件不可想象的事。注意:内联函数不是百分百会被插入到调用的地方,这是c++的概念。kotlin的内联也遵守c++的设计原则。

2023-10-08 16:32:52 1129

原创 Android虚拟机 Java虚拟机JVM常见问答分析与总结

JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的

2023-09-04 16:07:52 925

原创 Android Mvvm设计模式的详解与实现

目前在做有UI展示的一些项目或者端,都在说MVVM设计模式。MVVM全程view-viewModel-Model。还是分为三层,View层,viewModel:view与业务层,Model数据业务层View:是我们fragment或者Activity界面,主要处理UI渲染和交互的viewModel:介于view与Module之前,处理数据与逻辑上的,将Model请求的结果返回给view层Model:与viewModel打交道,将view需要的数据通过Model层来请求,然后将请求到的结果返回

2023-08-26 14:08:25 2841

原创 Java与Kotline Funcation函数与参数函数的详解

在现在以IDE为开发工具的时代,各种开发语言都有,kotlin的语法势头比较强,今天我们将介绍在项目中出现比较多的两种函数,一种是参数函数,还有一种就是Function函数

2023-08-04 16:49:52 595

原创 Kotlin 内联函数语法之let、apply、also、run、with的用法与详解

Kotlin 内联函数语法之let、apply、also、run、with的用法与详解

2023-07-27 11:15:01 1150

原创 Android kotlin高阶函数与Java lambda表达式介绍与实战

目前在Java JDK版本的不断升高,新的表达式已开始出现,但是在Android混淆开发中,kotlin的语言与Java的语言是紧密贴合的。所以Java lambda表达式在kotlin中以新的身份出现:高阶函数与lambda表达式特别类似。接下来我讲会先讲Java的lambda,再介绍kotlin的高阶函数。

2023-07-26 18:00:19 806

原创 Android ObjectBox数据库的使用与详解

objectBox数据库是一个新的产品,底层是以C和C++完成的数据库引擎。属于插件化东西,比Room接入要复杂一些,这是一款NOsql的数据库,也就是说,这个数据库不需要sql语句就可以使用,是以对象为实体的操作数据库。

2023-07-22 10:48:19 2291 7

原创 Android ConstrainLayout布局中View位置的介绍与使用

ConstrainLayout是一款布局View,再Design库中,现已被大家广泛接受并使用。ConstrainLayout的布局采用的方式和其他都不同,他的对其方式是类似RelativeLayout,但是和RelativeLayout有明显的区别。在布局渲染的时候,ConstrainLayout的子View是通过在一个容器中找到自己的位置,通过位置和对其方式来固定,所以在布局优化中,尝尝被提起到。

2023-07-02 12:36:25 920

原创 Android 安卓开发语言kotlin与Java该如何选择

通过kotlin的自身问题,其实kotlin就是一种插件语言,最终还是翻译成Java,只是目前来看,通过翻译的目标类,还是Java本身,但是增加了特别多的校验,导致写法和Java有很大的不同。这种不同来自我们的习惯问题。有人提前判空,有人喜欢丢在使用出判空,调用处让语法自然一些。Android应用不像PC,空指针是致命的BUG,出现一个就会导致崩溃。所以,kotlin对空指针校验特别严格,也对使用埋下了隐患,新手可以绕开校验,但是对于绕开的原理不够理解,就会引起崩溃。

2023-06-25 16:13:12 7781 1

Android Toast hook方案,解决小米手机toast问题

小米mimu系统,会对toast进行拦截,在用户提交的toast 消息体拼接一个前缀,由于该种会导致插件工程出现资源错乱,获取appLabel异常,现我们通过hook 动态代理,对消息发送做一个劫持,修改消息信息,还原原来的消息

2022-04-15

单链表的最基本操作,最基础的解释

物有所值,值得一看,SB都能看清楚,希望对你的C有帮助,好好学习,天天向上

2010-03-24

pdf转换成doc的工具

pdf转doc,方便,现在很多人下载了pdf资料不能用,这款转换工具就能方便你的学习,希望大家以后能方便学习 QQ36246172

2010-03-22

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

TA关注的人

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