在Android Studio中修改Android版本的两种主流方法
目录引言一、先厘清三个关键字段二、方法一:图形化操作(适合新手)三、方法二:直接改 build.gradle.kts(推荐进阶)四、常见报错与排查清单五、最佳实践小结结语引言
在 Android 开发的日常迭代中,我们经常需要升级或降级项目的 minSdkVersion、targetSdkVersion 与 compileSdkVersion。升级可以解锁新特性和性能优化; ...
Android通过Intent传递自定义对象的两种方式
目录前言方式一:Serializable方式二:Parcelable对比前言
我们经常会使用 Intent 来启动 Activity、发送广播等。在进行上述操作的过程中,我们还可以往 Intent 对象中添加额外的数据,比如:
// MainActivity.kt
val intent = Intent(this, AnotherActivity::class.java)
intent.putExtra("name", "Martin")
intent.putExt ...
FFmpeg开发笔记(七十六)使用国产SDK的播放器wlmedia渲染视频
《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上播放视频,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看网 ...
如何在 Android 中定义和使用自定义属性
目录1. 定义自定义属性2. 在布局文件中使用自定义属性3. 在自定义视图中获取属性值4. 使用样式应用自定义属性5. 使用 Kotlin 的特性总结1. 定义自定义属性
首先,我们需要在 res/values/attrs.xml 文件中定义自定义属性。这些属性可以是颜色、尺寸、字符串等。
创建或打开 res/values/attrs.xml 文件,并添加以下内容:
<?x ...
Android 监听时间变化
Android 监听时间变化
在Android应用中,有几种方式可以监听系统时间的变化。以下是几种常见的方法:
1. 使用BroadcastReceiver监听时间变化广播
Android系统会在时间发生变化时发送以下广播:
public class TimeChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Int ...
Android车载系统时间同步方案具体实现
Android车载系统时间同步方案具体实现
下面我将详细介绍各种时间同步方案的具体实现代码,包括完整的实现逻辑和关键代码片段。
一、NTP时间同步实现
完整实现类
public class NtpTimeSync {
private static final String TAG = "NtpTimeSync";
private static final String NTP_SERVER = "pool.ntp.org";
priva ...
Android Room使用流程与底层原理详解
目录一、 使用流程 (Step-by-Step Workflow)二、 应用场景 (Use Cases)三、 实现原理 (Implementation Principles)Room 是一个强大的 SQLite 对象映射库,旨在提供更健壮、更简洁、更符合现代开发模式的数据库访问方式。
核心价值: 消除大量样板代码,提供编译时 SQL 验证,强制结构化数据访问,并流畅集成 LiveData、Flow ...
Kotlin重写函数中的命名参数问题小结
目录在重写函数中命名参数的问题函数重写基础解释代码:属性重写解释代码:解释代码:重写函数中的参数命名解释代码:解释代码:更复杂的例子:具名参数与函数重写解释代码:参数命名指南总结在重写函数中命名参数的问题
在本主题中,我们将讨论在重写函数时如何正确命名参数。这一主题对那些希望编写纯净且易读代码的开发 ...
Monkey命令详解(压力测试工具)
目录基本语法常用参数2.1事件类型参数2.2 约束测试范围2.3 调试选项2.4.1 示例命令2.4.2 控制事件类型分布2.4.3 设置事件间隔并忽略崩溃2.4.4 测试多个App2.4.5 监控Native 崩溃并生成内存分析进阶用法3.1 保存日志到文件3.2在特定Activity启动测试3.3 组合多个参数前言:Monkey是 Android SDK 提供的一种压力测试工具,通 ...
Android 中实现格式化字符串的步骤
目录1、实现步骤:2、在 strings.xml 中定义3、常见格式占位符4、代码实现在 Android 中,可以通过格式化字符串的方式,实现各种特殊格式字符串的效果。
1、实现步骤:
在 strings.xml 里使用 带编号的占位符(如 %1s、s、%2s、d)。代码中通过 String getString(@StringRes int resId, Object… formatArgs) 来获取 ...
Android获取UserAgent(UA)的三种方式及详解
目录引言一、核心差异对比1. UA 内容完整性对比2. 技术实现差异二、各方案详细分析1. WebView 实例方式2. WebSettings.getDefaultUserAgent()3. System.getProperty(“http.agent”)三、风险综合评估1. 内存泄露风险矩阵2. 性能影响对比3. 功能兼容性风险四、行业最佳实践1. 现代应用推荐方案2. 特定场景优化策略 ...
Android LiveData使用方法与底层原理详解
目录一、 使用方法1. 创建 LiveData 对象2. 观察 LiveData 数据3. 更新 LiveData 数据4. 高级操作 (Transformations)二、 应用场景三、 实现原理四、 关键优势总结五、 注意事项与替代方案LiveData 是 Android Jetpack 架构组件库中的一个核心组件,它是一种可观察的数据持有者类,并且具有生命周期感知能力。这意味着 Live ...
Android中Launcher简介及启动流程原理
目录一、Launcher概述与应用图标显示原理1. Launcher的双重角色2. 应用图标数据加载流程3. 关键类作用二、Launcher启动流程原理1. 系统启动阶段的Launcher加载2. 点击图标启动新应用三、问题总结一、Launcher概述与应用图标显示原理
1. Launcher的双重角色
系统入口:响应点击事件,启动其他 ...
Uniapp前端Wap打包安卓环境部署教程超详细记录
目录1. 为什么需要 JDK?(1) Java 编译环境(2) 关键工具依赖(3) 版本要求2. 为什么需要 Android SDK?(1) Android 开发的核心资源1. 安装 Java JDK 8+步骤 1:下载 JDK步骤 2:安装 JDK步骤 3:配置环境变量步骤 4:验证安装2. 安装 Android Studio 并配置 SD ...
Android Studio修改配置文件路径的方法小结
目录1. 修改构建输出目录1.1 通过 build.gradle 文件修改1.2 通过 gradle.properties 文件修改2. 修改缓存目录2.1 通过 gradle.properties 文件修改2.2 通过 Android Studio 设置3. 修改日志文件路径4. 修改其他配置文件路径5.方法补充在使用 Android Studio 进行开发时,有时需要根据项目需求或个 ...
TV RecyclerView 焦点处理笔记
面对RecyclerView焦点,特别是复杂视图,多类型情况下,需求有时候不按系统定义的走,比如要求首次落焦在第二个,或者焦点移动到边界就不能移动
如果不遵循焦点流程直接粗暴处理,会导致系统分发事件出异常,焦点乱飞
默认焦点使用 addOnChildAttachStateChangeListener 监听
recyclerView.addOnChildAttachStateCha ...
Jetpack Compose学习(16)——ModalBottomSheet(底部弹窗)
原文地址: Jetpack Compose学习(16)——ModalBottomSheet(底部弹窗)-Stars-One的杂货小窝
接手新公司项目里,有代码用到了这个弹窗,由于需要重构架构和进行相关统一组件封装,顺手学习下这个组件,发现还是踩了些坑(怪我以Compose里的Dialog来用了哈哈)
介绍
这个组件是属于M3里的组件,需要引入androidx.compose.material3这 ...
Flutter与Android互通的常用方式实现与适用场景详解
目录1. 平台通道(Platform Channels)类型示例(MethodChannel)2. 插件(Plugins)使用步骤自定义插件3. 平台视图(Platform Views)4. 直接调用原生 Activity/Service5. 数据共享6. FFI(Foreign Function Interface)如何选择注意事项Flutter 与 Android 的互通主要通过以下几种方式实现,每种方式适用于不同的场景:
1 ...
kotlin中的冷流和热流示例详解
目录Kotlin 中的热流(Hot Stream)与冷流(Cold Stream)解析1. 冷流(Cold Stream)基本概念核心特点:示例代码:2. 热流(Hot Stream)基本概念核心特点:示例代码:3. 关键区别对比4. 实际应用场景适合使用冷流的情况:适合使用热流的情况:5. 相互转换冷流转热流:热流转冷流:6. 性能考量Kotlin 中的热流(Hot Stream ...
Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析
目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期管理三、详细使用场景及代码示例Flow 的使用场景数据库变更监听示例Channel 的使用场景任务队列示例四、优缺点分析Flow 的优势Flow 的不足Channel 的优势Channel 的不足五、选择建议及注意事项选择建议注意事项在 And ...