自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android菜鸟的专栏

我是一个Android菜鸟,好希望有人能写一些菜鸟能轻松看得懂的教程给我学习学习!我渴望学习!

  • 博客(381)
  • 收藏
  • 关注

原创 程序员装机必备软件

这里记录我安装好系统之后必须要安装的一些软件官方地址。JavaSE JDK8:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.htmlAndroid Studio:https://developer.android.google.cn/studioIntelliJ IDEA:https://www.jetbrains.com/idea/Everything:https://www.voidtools.

2021-04-22 11:07:13 1531

原创 广州图书馆

写篇博客记录一下广州图书馆吧!今年的某一天第一次去广州图书馆,里面是真的宽广、干净又安静,图书很多,我想要的书几乎都有,可以说,你平时在广州购书中心想要买的书,在图书馆绝大多数都有,所以,为什么要花钱去买呢!而且图书馆里的书很多都是很新的,我以前天真的以为图书馆的书都是很旧的,我错了!广州图书馆里面环境真的很好,坐位超级多的,生怕你没地方做似的,可能是疫情期间,进馆需要预约,所以我看到坐位那么多,还没几个人做,不知道没疫情时没人数限制那时是不是坐位暴满的场面,就恨自己以前为什么不早点去图书馆逛逛,这样就

2021-02-03 15:47:16 1260 4

原创 想学习的内容零散笔记

突然间发现,可以学的东西好多,自己好多东西不会,好落后了,Android已经出了好多好用又新的东西自己都没花时间去学,不是学不会,只是没去学。谷歌还是很做实事的,Android更新非常快,包括android系统和相应的api,文档也是越来越丰富(相比早期的简单文档),可以看出谷歌是一家做实事的公司,是一家好公司,做Android,不会错的,关键看自己的学习能力了。在这个互联网时代,手机、电脑很容易分人的心,经常不记得自己要干什么了,所以这里记录一下自己想学的东西,迷茫的时候就来翻翻这个日志,找点喜欢的东

2020-09-10 17:00:12 841

原创 一看就懂的i++和++i详解

我相信很多朋友可能之前已经百度过i++和++i的相关文章了,也做过不少的练习,觉得自己已经深刻掌握了它们之间的原理了,真的是这样的吗?来试试计算一下我下面提供的几道练习,你就会发现你又不会了!

2020-05-09 22:10:35 55246 156

原创 Android发广播的坑

摘要:在Android 11设备上测试广播接收时发现异常现象:直接通过Android Studio重新运行应用会导致广播接收失效,而手动杀死进程后重启则正常。问题可能与广播未正确解除注册有关,在onDestroy()中添加unregisterReceiver()可部分解决。不同品牌手机表现不一致,某些强制停止操作会破坏广播接收功能。建议开发时遇到广播接收异常时手动杀死应用进程再测试,这比卸载重装更高效。

2026-04-12 14:22:27 203

原创 Standard.kt中的函数

let、run、with、also、apply、takeIf源码及使用。

2026-04-09 19:55:51 479

原创 kotlin中的when

Kotlin的when表达式支持多种匹配方式:类型检查(is)、值相等判断、区间检查(in)等。示例中第一个分支使用is检查类型,后两个直接比较单例对象值。when还可用于任意布尔表达式,此时不跟括号。这种灵活语法允许在单个when结构中混合不同类型判断,简化了条件逻辑编写。

2026-04-09 15:12:05 244

原创 Comparator与Comparable的区别

Comparator与Comparable的区别。

2026-04-08 20:12:36 419

原创 kotlin中的内联函数重载

内容展示了kotlin中的内联函数重载的使用。

2026-04-08 19:15:57 524

原创 Preconditions.kt中require和check是什么区别 ?

Kotlin中require和check的关键区别:require验证调用者参数合法性(抛出IllegalArgumentException),用于方法入口检查;check验证对象内部状态正确性(抛出IllegalStateException),用于方法执行中的状态验证。简单记:require是"参数要对",check是"状态要对"。此外,assert仅调试用,业务代码不建议使用。

2026-04-08 18:53:22 36

原创 Android中有什么技术过时了可以直接用新技术的

Android技术过时替代指南(2026版) 【可淘汰技术】 AsyncTask:内存泄漏风险,改用Kotlin协程 ListView/ButterKnife:用RecyclerView/ViewBinding替代 Handler+Thread常规用法:优先使用协程Dispatchers 【建议替换技术】 XML UI:Jetpack Compose渐成主流 LiveData:推荐StateFlow/SharedFlow IntentService:改用WorkManager 【仍需保留技术】 Handle

2026-04-06 14:11:42 813

原创 AGPBI警告

Android项目编译时出现Kotlin元数据解析错误警告,提示R8工具版本与Kotlin版本不兼容。该警告通常在Kotlin版本高于R8发布时的兼容版本时出现,建议查看官方文档核对版本匹配关系。错误堆栈显示在处理类'IdentityActivity'的元数据重写时发生意外错误,涉及R8内部组件调用异常。解决方案包括:检查并调整Kotlin与R8版本匹配,或升级Android Gradle插件以获取兼容的R8版本。虽然警告可能不影响编译结果,但建议及时处理以避免潜在的运行时问题。

2026-04-02 15:08:37 50

原创 Lint错误

Android Lint检查发现项目存在错误,导致构建失败。主要问题是一个实现了Parcelable接口的类缺少必需的CREATOR字段。解决方案包括:1)正确实现Parcelable接口,添加CREATOR字段;2)使用Android Studio自动生成Parcelable代码;3)使用@Parcelize注解简化实现。临时解决方案可通过配置build.gradle忽略Lint错误或创建基线文件,但这无法解决潜在的运行时崩溃风险。建议优先采用正确实现Parcelable的方案,确保代码的健壮性。

2026-04-02 14:44:45 350

原创 阿里云仓库下载依赖失败

本文分析了Gradle构建时出现dataBindingMergeDependencyArtifactsNewDebug异常的问题原因和解决方案。主要问题是由于阿里云镜像仓库同步延迟,导致Gradle在找到pom文件后认为依赖存在,但实际aar文件未同步,且Gradle的负缓存机制会记录查找失败结果。解决方案包括:1) 配置仓库的metadataSources同时查找pom和aar;2) 使用--refresh-dependencies强制刷新依赖;3) 删除Gradle缓存目录。文中还解释了Gradle的依

2026-04-02 14:15:24 527

原创 Java 时间API使用教程

java时间API使用教程,对比了旧时间API与新时间API的使用。

2026-04-01 09:56:00 498

原创 Java中的Locale和TimeZone和ZoneId

摘要: Java中的Locale和TimeZone分别处理国际化的不同方面: Locale:定义语言和地区(如en_US、zh_CN),影响文本格式(数字、日期、货币的显示方式),例如中文显示“2026年3月31日”,英文显示“March 31, 2026”。 TimeZone:确定时区(如Asia/Shanghai),影响时间计算和显示,同一UTC时间在不同时区会转换为当地时间(如UTC 12:00对应北京20:00)。 核心区别: Locale控制“如何表达”(格式与语言),TimeZone控制“具体时

2026-04-01 09:06:51 225

原创 Retrofit入门教程

Retrofit入门教程,包含示例代码。

2026-03-22 00:02:54 407

原创 OkHttp 使用教程:从入门到精通(Kotlin)

OkHttp的入门使用教程,包含示例代码。

2026-03-21 23:38:06 557 1

原创 Okio 使用教程:从入门到精通

Okio的入门使用,每个知识点都带有相应的示例代码。

2026-03-21 23:17:30 390

原创 Java 7之后主要的新特性

Java 7 之后的主要新特性包括: Java 7(2011):try-with-resources、Switch支持String、Diamond操作符<>、多异常捕获 Java 8(2014):Lambda表达式、Stream API、函数式接口、Optional、方法引用、默认方法、新时间API Java 9(2017):模块系统、List.of() Java 10(2018):var局部变量类型推断 Java 11(LTS):String增强、HttpClient、Files API增强

2026-03-20 09:33:51 354

原创 Android图库选择器/文件选择器

2024-2026年Android图库/文件选择器开源库全景 ✅ 主流活跃库: 图库选择器:PictureSelector(全功能)、ImagePickerAndroid(轻量)、ImagePickerKMP(跨平台) 文件选择器:FilePicker、ComposeFilePicker(Compose专用) 官方方案:Android Photo Picker(未来主流) ⚠️ 已过时库: android-image-picker(已归档)、Android-FilePicker(兼容问题)、ChiliPho

2026-03-20 09:31:15 474

原创 Retrofit的一些高级使用示例

Retrofit高级使用摘要 本文介绍5个Retrofit高级用法:1) 动态BaseUrl切换,通过@Url或拦截器实现多域名支持;2) 统一错误处理,封装ApiResult类并自定义CallAdapter实现业务错误码解析;3) 自定义Converter处理统一数据结构、加密等场景;4) 文件上传进度监听,通过自定义RequestBody实现;5) 大文件下载优化方案。这些技巧可显著提升网络层的扩展性和性能表现。

2026-03-20 08:50:57 503

原创 编程中的Model、Domain、Entity等的含义

文章摘要: ViewModel中的"Model"并非单纯指数据模型,而是代表一种抽象表示。在软件架构中,Model层包含业务数据、规则和逻辑,而ViewModel特指为View准备的UI状态模型。它不同于业务Model,专门处理UI相关数据如加载状态、错误信息等。Android采用ViewModel而非Controller/Presenter,是因为它不直接操作UI,仅提供观察数据,且能自动处理配置变化。ViewModel本质上是View的数据容器和状态管理器,其命名准确反映了&quot

2026-03-07 16:26:18 455

原创 Kill process和Force stop process的区别

Android Studio中,在中,有一个和一个按钮,有什么区别,我何时选择用哪个来停止进程?这是一个非常好的问题 👍在 Android Studio 的它们底层行为完全不同。

2026-03-03 16:37:40 883

原创 ComponentActivity与AppCompatActivity 功能介绍

ComponentActivity是Jetpack架构的基础Activity,为Jetpack组件提供运行环境。它解决了传统Activity功能不足的问题,提供了生命周期感知、ViewModel管理、状态保存、结果回调等现代能力。ComponentActivity实现了多个关键接口,包括LifecycleOwner、ViewModelStoreOwner等,支持LiveData、协程、Fragment等功能。AndroidX将其从core库拆分到activity库,实现模块化架构,降低耦合。目前推荐使用an

2026-03-01 13:36:53 1068

原创 Github数据分析

GitStar Ranking 是一个对 GitHub 用户、组织和仓库按 Star 数量进行排序的网站,提供各类排行榜单,方便开发者发现热门项目和优质开发者。

2026-02-28 09:50:58 129

原创 仅用于编译的Adnroid.jar

本文介绍了开发跨平台日志库的方案,支持Java和Android项目自动适配不同日志输出方式。关键点包括:1)使用compileOnly依赖android.jar或Robolectric库检测平台;2)通过Class.forName检查android.os.Build类判断运行环境;3)提供Kotlin扩展函数简化日志调用。重点对比了两种Android依赖方案:轻量级的com.google.android:android(仅API16)和功能完整的org.robolectric:android-all(支持最

2026-02-26 10:34:28 767

原创 JUnit 4.x最新版本

摘要:Android Studio新建项目默认使用不存在的JUnit 4.14-SNAPSHOT版本会导致编译错误。实际上JUnit 4最新正式版是4.13.2,且已进入维护模式。建议开发者迁移至JUnit 5以获得长期支持和新特性,但Android官方仍未默认采用JUnit 5,原因尚不明确。(149字)

2026-01-30 12:58:15 326

原创 kotlin中好用的集合扩展函数

kotlin常用集合扩展函数使用示例。

2026-01-27 15:20:43 891

原创 kotlin魔法runCatching

摘要:Kotlin的runCatching提供了一种简洁的方式来处理可能抛出异常的代码块,它返回一个Result对象。相比传统的try/catch,runCatching可以通过链式调用更优雅地处理异常情况,如使用getOrNull()在异常时返回null,或getOrDefault()返回默认值。Result类类似于Java的Optional,提供了onSuccess和onFailure等方法进行更灵活的操作。这种方法简化了异常处理代码,使开发者可以专注于业务逻辑。

2026-01-27 10:26:16 151

原创 Gson的实用技巧

开发中常用的Gson使用技巧合集。

2026-01-15 16:58:26 603

原创 kotlin by lazy 原理

Kotlin中的by lazy语法糖实现了属性的懒加载功能,其原理是通过封装初始化逻辑到Lazy类中。开发者可以手动实现类似功能(如示例中的SimpleLazy类),在首次访问属性时才执行初始化。标准库的lazy委托进一步简化了代码,只需一行声明即可实现懒加载,底层原理与手动实现类似,都是通过存储中间变量和延迟初始化来完成的。理解这一机制有助于更好地使用Kotlin的懒加载特性。

2025-12-22 11:05:15 293

转载 音视频播放在线资源示例地址(方便前端开发测试)包含MP4、FLV、HLS、m3u8、DASH h265 h266 RTC等格式

前端开发过程中,时常需要测试各种格式的视频播放,比如 MP4、FLV、HLS、DASH 甚至 音频,但找合适的测试资源往往很麻烦,为了方便开发,这里整理了一些稳定可用的视频播放示例地址,直接复制就能用!🎬 音视频播放在线资源示例地址(方便前端开发测试)包含MP4、FLV、HLS、m3u8、DASH h265 h266 RTC等格式。HLS 直播 (m3u8)HLS 直播 (h265)HLS 直播 (h266)📌 常见视频格式测试地址。

2025-12-01 14:52:27 7952

原创 编译最新版本FFmpeg为so

这篇文章主要介绍了在Android平台上编译支持文字水印功能的FFmpeg的过程。内容包括: 需求分析:需要在Android设备上采集摄像头YUV数据,通过FFmpeg添加水印并编码为H264格式 依赖关系:FFmpeg的drawtext功能需要FreeType和HarfBuzz支持,分别负责字体渲染和文字排版 软件下载: 下载Linux版NDK r27d 下载FreeType 2.14.1 下载FFmpeg 8.0 环境配置:设置编译路径、安装路径、交叉编译工具链等 文章提供了详细的下载链接和配置方法,为

2025-11-20 08:38:52 1191

原创 OkHttp连接复用

当使用`OkHttp`时,它会先建立TCP连接,然后再发送请求,当请求结束后,TCP连接并不是立马关闭的,而是缓存起来,直接空闲了一段时间后才会关闭,所以当你连续多次请求时,如果请求的服务器和协议(HTTP 1.1/2.0)相同,则它会复用之前的建立的连接,以加快请求速度。

2025-10-24 11:26:01 873

原创 App Startup

摘要:App Startup库用于解决Android库自动初始化问题。传统方式需要用户继承库的Application类进行初始化,但存在多库继承冲突问题。App Startup通过Initializer接口实现初始化逻辑,在清单文件中声明即可自动执行。支持初始化顺序控制、依赖管理,并允许禁用默认初始化或自定义初始化逻辑。相比Application方式更灵活,解决了多库初始化冲突问题,是Android官方推荐的库初始化方案。 (150字)

2025-10-21 11:39:19 703

原创 CMake环境配置

本文介绍了如何在Windows系统下独立使用CMake配合MinGW-w64进行项目构建。首先从CMake官网下载压缩版本并配置环境变量,验证安装后通过Pre-built Toolchains获取MinGW-w64工具链。重点讲解了工具链的选择标准,包括平台兼容性、运行库类型、位宽等关键参数,推荐了WinLibs.com等即用型版本。最后详细说明了如何配置CMake默认使用MinGW-w64编译器,并通过创建CMakeLists.txt文件验证配置成功。整个过程无需依赖VS等大型IDE,适合希望轻量化构建环

2025-10-20 10:58:13 1158

原创 发布aar到Maven Central

本文介绍了将Android库发布到Maven Central的完整流程。作者首先对比了发布到公司私服和云服务器的局限性,指出Maven Central的免费和全球可用优势。文章详细说明了Gradle配置步骤,包括使用maven-publish插件、设置发布参数和仓库认证信息。重点介绍了注册Maven Central账号和验证域名所有权的关键步骤,分享了使用阿里云DNS配置TXT记录的经验,并提供了验证DNS解析是否生效的具体方法。最后推荐了vanniktech/gradle-maven-publish-pl

2025-10-16 11:15:38 1023

原创 超好用的Android日志

这是一个使用 [tony19/logback-android](https://github.com/tony19/logback-android) 为 [JakeWharton/timber](https://github.com/JakeWharton/timber) 实现的Tree,结合了`Timber`可以自动使用当前类作为`tag`以及`logback`记录日志到文件的强大功能的各自优点,用于在`Android`中可以方便的将日志写到控制台以及文件中。

2025-10-15 17:34:26 944

原创 Gradle编译器选项配置

Kotlin编译器选项可通过Gradle DSL在三个层级配置:扩展层级(全局默认)、目标层级(特定目标默认)和编译单元层级(任务级)。较高级别设置作为低级别默认值,低级别可覆盖高级别配置。Kotlin 2.2.0后推荐使用新的compilerOptions替代已废弃的kotlinOptions,Android项目也需改用新方式配置如jvmTarget等选项。

2025-10-14 14:42:02 293

sokit-1.3-win32-chs(中文版)

sokit是一个开源项目,是一个TCP / UDP 测试工具,用来接收,发送,转发TCP或UDP数据包。 项目地址: http://code.google.com/p/sokit/、https://github.com/sinpolib/sokit。

2023-02-21

空空如也

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

TA关注的人

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