自定义博客皮肤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菜鸟,好希望有人能写一些菜鸟能轻松看得懂的教程给我学习学习!我渴望学习!

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

原创 程序员装机必备软件

这里记录我安装好系统之后必须要安装的一些软件官方地址。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 1671

原创 广州图书馆

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

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

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

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

2020-09-10 17:00:12 864

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

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

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

原创 安装Adnroid官方Skills

本文介绍了Android CLI和Android Skills的安装与配置方法。主要内容包括: 安装Android CLI:通过执行特定命令下载并配置环境变量,验证安装成功后可使用基本命令如--version、update等。 初始化Android CLI技能:执行android init命令自动检测并安装到已安装的Agent目录中,使Agent能识别和使用CLI功能。 安装Android Skills:需设置代理才能完成安装,文中提供了相关命令和注意事项。 文章还提供了官方文档参考链接,并解释了安装过程中

2026-06-15 11:21:22 342

原创 Android杀进程重启

该文章介绍了两种在Android中杀掉进程并自动重启应用的方法。第一种是通过保持一个Service存活,利用系统自动重启机制在进程被杀后重新启动应用,但需要注意Android 10及以上版本限制Service启动Activity。第二种更简单的方法是在杀进程前先启动主Activity,利用系统自动恢复机制实现重启。两种方法都需先调用finishAffinity()结束当前任务栈,再调用exitProcess(0)终止进程。文章详细说明了实现原理和代码示例,并比较了两种方案的优缺点。

2026-06-08 15:26:12 274

原创 Android SD卡读写测试

本文介绍了Android开发中getExternalFilesDirs(null)的用法,该方法返回包含内置存储和外置SD卡根目录的数组。内置存储是手机出厂自带且不可插拔的,而外置SD卡则允许用户自由插拔,便于数据传输。作者提到在定制Android设备上常使用外置SD卡存储视频,方便后续通过读卡器复制文件。此外,文章还分享了利用AI工具快速开发的经验,通过Android Studio自带的Gemini在几分钟内完成了一个SD卡测试程序(项目地址已提供),显著提高了开发效率。

2026-06-05 11:06:28 289

原创 快速删除集合中的元素

本文展示了在Kotlin中使用removeIf方法简洁删除集合元素的方式。对于List,可以删除包含特定字符的字符串;对于Map,可以删除key包含特定字符的条目。相比传统for循环可能引发的并发修改异常,removeIf方法提供了更安全简洁的实现方案,避免了手动使用Iterator的繁琐代码。示例代码演示了两种集合类型的删除操作及结果输出。

2026-05-27 15:28:55 67

原创 自定义EventBus

Android开发中替代EventBus并自动绑定生命周期的方案: 官方推荐方案: 使用Kotlin Flow + LifecycleScope 通过SharedFlow实现事件总线 使用repeatOnLifecycle自动绑定生命周期 其他方案: LiveData + ViewModel(经典方案) FlowBus(社区封装库) 非Activity场景处理: Service中使用自定义CoroutineScope LifecycleService自带lifecycleScope 单例模式中使用Appli

2026-05-11 10:26:06 322

原创 给Git项目添加多个远程仓库

我想实现这样一样功能:在公司,有个项目,太忙了时间不够写这个项目,所以周末我想在家里也进行工作,但是项目的git是在公司的,在家里访问不了,所以我想在github上创建一个项目,然后把公司项目push到github,且需要github上有所有的之前的提交记录,然后我回到家就可以从github上继续工作,且代码也提交到github上,到了上班时间回到公司后,把公司的项目也切换到github,以便获取最新代码,然后再切换回公司的git把最新提示push到公司git,这样行的通吗?具体要怎么操作?只是简单改gi

2026-04-24 17:57:25 276

原创 libs.versions.toml文件的使用

摘要 Android开发中使用libs.versions.toml文件统一管理依赖版本,采用TOML格式。文件位于项目根目录的gradle文件夹下,包含[versions]、[libraries]、[plugins]和[bundles]四个部分。关键特性是别名标准化处理:所有-、_和.在引用时都会转换为.(如androidx-ktx变为libs.androidx.ktx)。在build.gradle中通过libs.xxx引用依赖,通过libs.plugins.xxx引用插件。官方推荐使用kebab-case

2026-04-23 10:07:47 505

原创 Kotlin 集合常用操作

Kotlin集合操作摘要(150字): Kotlin集合操作可分为8大类:1)创建集合(listOf/mapOf等);2)转换操作(map/flatMap/zip);3)过滤操作(filter/take/drop);4)聚合计算(sum/count/fold);5)排序操作(sorted/sortedBy);6)查找元素(find/contains);7)分组操作(groupBy);8)集合运算(union/intersect)。常用操作包括:listOf(1,2,3).map{it*2}→[2,4,6],

2026-04-22 10:19:31 207

原创 ArrayList遍历时移除元素

摘要: 在处理服务器返回的[null]空数组时,需移除null元素后判断集合是否为空。错误使用for-each直接移除会抛ConcurrentModificationException,推荐四种正确方式: Iterator:通过iterator.remove()安全移除; removeIf(推荐):Java 8+的简洁写法list.removeIf(Objects::isNull); 倒序for循环:避免索引错位; 正序for循环:需手动i--补偿索引。 总结:首选removeIf,低版本用Iterator

2026-04-21 16:31:16 101

原创 Android发广播的坑

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

2026-04-12 14:22:27 253

原创 Standard.kt中的函数

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

2026-04-09 19:55:51 521

原创 kotlin中的when

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

2026-04-09 15:12:05 284

原创 Comparator与Comparable的区别

Comparator与Comparable的区别。

2026-04-08 20:12:36 462

原创 kotlin中的内联函数重载

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

2026-04-08 19:15:57 572

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

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

2026-04-08 18:53:22 82

原创 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 1001

原创 AGPBI警告

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

2026-04-02 15:08:37 121

原创 Lint错误

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

2026-04-02 14:44:45 431

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

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

2026-04-02 14:15:24 613

原创 Java 时间API使用教程

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

2026-04-01 09:56:00 548

原创 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 318

原创 Retrofit入门教程

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

2026-03-22 00:02:54 508

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

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

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

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

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

2026-03-21 23:17:30 447

原创 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 424

原创 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 627

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

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

2026-03-20 08:50:57 569

原创 编程中的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 516

原创 Kill process和Force stop process的区别

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

2026-03-03 16:37:40 997

原创 ComponentActivity与AppCompatActivity 功能介绍

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

2026-03-01 13:36:53 1144

原创 Github数据分析

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

2026-02-28 09:50:58 160

原创 仅用于编译的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 789

原创 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 390

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

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

2026-01-27 15:20:43 946

原创 kotlin魔法runCatching

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

2026-01-27 10:26:16 214

原创 Gson的实用技巧

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

2026-01-15 16:58:26 655

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关注的人

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