
Android 开发实战班
文章平均质量分 91
老码小张
前腾讯电子签前端负责人,whentimes CTO,精通移动客户端架构设计、性能调优。精通 react、vue 等前端主流框架。微信公众号:老码小张
展开
-
Android开发实战班 - 网络编程 - WebSocket 实时通信
什么是 WebSocketWebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 允许服务器主动向客户端推送数据,实现实时双向通信。WebSocket 的特点全双工通信: 服务器和客户端可以同时发送和接收数据。实时性: WebSocket 实现了真正的实时通信,适合实时数据传输。高效性: WebSocket 使用单个 TCP 连接,减少了 HTTP 请求的开销。支持跨域: WebSocket 支持跨域通信,可以在不同域名之间进行通信。原创 2024-11-20 18:55:37 · 1553 阅读 · 0 评论 -
Android开发实战班 -网络编程 - Retrofit 网络请求 + OkHttp 使用详解
网络编程的作用网络编程用于实现应用与服务器之间的数据交互,例如获取数据、提交数据、更新数据等。常见的网络请求类型有 GET, POST, PUT, DELETE 等。网络编程的挑战异步操作: 网络请求是异步的,需要处理线程切换和回调。错误处理: 需要处理网络错误、超时、数据解析错误等。安全性: 需要处理 HTTPS、证书验证、加密传输等。性能优化: 需要优化网络请求的性能,例如缓存、重试机制等。Retrofit 的历史与发展。原创 2024-11-20 18:46:38 · 1392 阅读 · 0 评论 -
Android开发实战班 - 数据持久化 - 数据加密与安全
什么是数据加密数据加密是指将明文数据通过加密算法转换为密文数据,只有持有正确密钥的人才能解密并读取数据。数据加密的目的保密性: 防止数据泄露,确保只有授权用户才能读取数据。完整性: 防止数据被篡改,确保数据的完整性和一致性。身份验证: 验证数据的来源,确保数据来自可信的发送者。加密类型对称加密: 使用相同的密钥进行加密和解密,例如 AES。非对称加密: 使用一对公钥和私钥进行加密和解密,例如 RSA。哈希加密: 将数据转换为固定长度的哈希值,例如 SHA-256。原创 2024-11-20 18:41:48 · 1098 阅读 · 0 评论 -
Android开发实战班 - 数据持久化 - 文件系统操作
内部存储 (Internal Storage)数据存储在设备的内部存储空间中,应用私有,其他应用无法访问。内部存储的数据在应用卸载时会被自动删除。适用于存储应用的私有数据,例如用户设置、应用缓存等。外部存储 (External Storage)数据存储在设备的外部存储空间中,可以被其他应用访问。外部存储的数据在应用卸载时不会被自动删除。适用于存储用户共享的数据,例如图片、音频、视频、下载的文件等。原创 2024-11-20 18:37:24 · 973 阅读 · 0 评论 -
Android开发实战班 - 数据持久化 - DataStore 现代存储方案
DataStore 的历史与发展DataStore 是 Google 在 2020 年推出的新一代持久化存储解决方案,旨在取代传统的。DataStore 提供了更安全、更高效、更灵活的存储方式,并支持 Kotlin 协程和 Flow。DataStore 的优势异步操作: DataStore 默认使用异步操作,避免阻塞主线程。类型安全: DataStore 支持 Kotlin 的类型安全特性,减少运行时错误。Kotlin 协程和 Flow 支持。原创 2024-11-20 18:31:19 · 879 阅读 · 0 评论 -
Android开发实战班 - 数据持久化 - Room 数据库应用
Room 的历史与发展Room 是 Google 在 2017 年推出的持久化库,旨在简化 Android 应用中的 SQLite 数据库操作。Room 提供了更简洁的 API,编译时 SQL 语句检查,以及与 LiveData 和 Flow 的无缝集成。Room 的优势简洁易用: 相比直接使用 SQLite,Room 提供了更简洁的 API,简化了数据库操作。编译时检查: Room 在编译时会检查 SQL 语句的正确性,避免运行时错误。与 LiveData 和 Flow 集成。原创 2024-11-20 17:09:11 · 1219 阅读 · 0 评论 -
Android开发实战班 - 应用架构 - 单向数据流(Unidirectional Data Flow, UDF)
什么是单向数据流单向数据流是一种架构模式,数据在应用中只能沿着一个方向流动:数据从数据源流向 UI,UI 只能通过事件将用户操作反馈给数据源,而不能直接修改数据源。数据流动方向:数据源(Model) -> UI(View) -> 用户操作 -> 数据源(Model)UDF 的优势可预测性: 数据流动方向单一,代码行为更可预测。可维护性: 数据流清晰,代码更易于理解和维护。可测试性: 数据流分离,UI 和数据逻辑可以独立测试。一致性: 所有数据更新都通过数据源进行,避免数据不一致问题。原创 2024-11-20 15:56:11 · 1034 阅读 · 0 评论 -
Android开发实战班 -应用架构 之依赖注入(Hilt)
什么是依赖注入依赖注入是一种设计模式,用于实现对象与其依赖项之间的解耦。通过依赖注入,类不再负责创建其依赖项,而是由外部注入依赖项。依赖注入的优势解耦: 类与其依赖项解耦,提高代码的可维护性和可测试性。可测试性: 更容易编写单元测试,可以通过注入不同的依赖项来模拟不同的行为。可复用性: 依赖项可以在不同的类之间复用,减少代码重复。生命周期管理: 依赖项的生命周期可以由依赖注入框架管理,避免内存泄漏。Hilt。原创 2024-11-20 15:50:16 · 1306 阅读 · 0 评论 -
Android开发实战班 - 应用架构 之 Kotlin 协程基础
什么是协程协程是一种轻量级的线程,用于简化异步编程和并发任务处理。协程可以挂起(suspend)和恢复(resume),而不阻塞线程。协程的优势轻量级: 协程比线程更轻量,可以创建大量的协程而不会消耗太多资源。可读性高: 协程代码更简洁,易于理解和使用。灵活性强: 协程可以轻松地在不同线程之间切换。内存效率: 协程的内存占用比线程低,可以更高效地使用内存。原创 2024-11-20 15:40:04 · 1195 阅读 · 0 评论 -
Android开发实战班 - 应用架构 - LiveData/Flow 数据流
数据流的作用数据流用于在 ViewModel 和 View 之间传递数据,实现数据的观察和响应。数据流可以感知生命周期变化,避免内存泄漏。数据流的优势生命周期感知: 数据流可以感知 View 的生命周期,自动管理订阅和取消订阅,避免内存泄漏。响应式编程: 数据流采用响应式编程范式,数据变化时自动通知观察者更新 UI。线程安全: 数据流支持线程切换,可以在不同线程之间安全地传递数据。前腾讯电子签的前端负责人,现 whentimes tech CTO,专注于前端技术的大咖一枚!原创 2024-11-20 15:22:50 · 1326 阅读 · 0 评论 -
Android开发实战班 -应用架构 - MVVM 架构模式
MVVM 的起源MVVM(Model-View-ViewModel)架构模式最初由 Microsoft 提出,用于构建 WPF(Windows Presentation Foundation)和 Silverlight 应用。随着 Android 开发的复杂化,MVVM 被引入到 Android 开发中,并成为主流架构模式之一。MVVM 的核心思想分离关注点: 将应用的 UI 逻辑、数据和业务逻辑分离,使代码更清晰、易于维护。数据驱动 UI。原创 2024-11-20 15:06:30 · 1900 阅读 · 0 评论 -
Android开发实战班 - 现代 UI 开发之 Modifier 全面应用
什么是 ModifierModifier 是 Jetpack Compose 中用于修饰和定制 Compose 组件的对象。通过 Modifier,可以调整组件的布局、样式、交互行为、动画效果等。Modifier 的优势声明式: Modifier 使用声明式语法,代码简洁易读。组合性: 可以将多个 Modifier 组合在一起,实现复杂的 UI 定制。复用性: 可以将常用的 Modifier 封装起来,提高代码复用性。灵活性。原创 2024-11-20 14:24:46 · 957 阅读 · 0 评论 -
Android开发实战班 - 现代 UI 开发之自定义 Compose 组件
代码复用通过创建自定义组件,可以将常用的 UI 逻辑封装起来,避免重复代码,提高代码复用性。简化 UI 逻辑将复杂的 UI 逻辑封装到自定义组件中,可以简化调用代码,使代码更简洁易懂。一致性自定义组件可以保证应用界面的一致性,例如统一的按钮样式、输入框样式等。模块化自定义组件可以将 UI 拆分成更小的模块,便于维护和测试。创建自定义 Compose 组件非常简单,只需定义一个带有注解的函数即可。) {Text(参数说明text: 按钮显示的文本。onClick: 按钮点击事件回调。原创 2024-11-20 14:17:46 · 1269 阅读 · 0 评论 -
Android开发实战班 - 现代 UI 开发之 Material Design及自定义主题
Material Design 的历史与发展Material Design 1.0 于 2014 年发布,旨在为跨平台应用提供一致的设计语言。Material Design 2.0 于 2018 年发布,引入了更多自定义选项和动态色彩。Material Design 3(MD3)于 2021 年发布,进一步优化了设计语言,提供了更灵活的主题定制和更现代化的视觉风格。Material Design 3 的核心目标个性化: 提供更强大的主题定制功能,允许开发者根据品牌需求自定义颜色、字体、排版等。原创 2024-11-19 19:52:46 · 1124 阅读 · 0 评论 -
Android开发实战班 - 现代 UI 开发之 Jetpack Compose 基础
Jetpack Compose 的历史与发展Jetpack Compose 由 Google 于 2019 年发布,旨在为 Android 开发提供现代化的声明式 UI 框架。Jetpack Compose 1.0 于 2021 年正式发布,目前已成为 Android UI 开发的推荐方式。Jetpack Compose 的优势声明式编程: 使用声明式编程范式,代码更简洁、可读性更高。Kotlin 原生支持: 完全使用 Kotlin 编写,与 Kotlin 语言特性无缝集成。简化 UI 开发。原创 2024-11-19 19:43:57 · 1781 阅读 · 0 评论 -
Android开发实战班-Android App 的启动过程
Bootloader 加载内核当设备启动时,Bootloader 加载 Android 操作系统的内核。启动 Init 进程内核加载完成后,Init 进程(PID=1)启动,这是 Android 系统的第一个进程,负责启动其他系统服务。启动 Zygote 进程Zygote 进程是 Android 系统中的核心进程,负责预加载常用的 Java 类和资源,并为每个应用进程提供孵化服务。启动 System Server。原创 2024-11-19 19:31:53 · 874 阅读 · 0 评论 -
Android开发实战班 - Activity 生命周期
Activity 的定义Activity 是 Android 应用中用于与用户交互的组件,每个 Activity 通常代表一个用户界面窗口。应用通常由多个 Activity 组成,例如登录页、主界面、设置页等。Activity 的作用管理用户界面。处理用户交互事件。与其他组件进行通信。前腾讯电子签的前端负责人,现 whentimes tech CTO,专注于前端技术的大咖一枚!一路走来,从小屏到大屏,从 Web 到移动,什么前端难题都见过。原创 2024-11-19 19:18:11 · 944 阅读 · 0 评论 -
Android开发实战班 - Gradle 构建系统入门
Gradle 的历史与发展Gradle 由 Hans Dockter 等人于 2007 年创建,最初用于 Java 项目构建。2013 年,Google 宣布 Android Studio 默认使用 Gradle 作为构建系统。Gradle 支持多语言、多平台,广泛应用于 Android、Java、Kotlin、Groovy 等项目。Gradle 的优势基于 Groovy/Kotlin 的 DSL: 构建脚本使用 Groovy 或 Kotlin 编写,语法简洁灵活。插件化架构。原创 2024-11-19 19:13:19 · 899 阅读 · 0 评论 -
Android开发实战班 - Android开发基础之 Kotlin语言基础与特性
Kotlin 的历史与发展Kotlin 由 JetBrains 于 2011 年首次发布,2017 年被 Google 宣布为 Android 官方开发语言。Kotlin 1.0 于 2016 年发布,目前最新版本为 Kotlin 1.8.x。Kotlin 不仅可以用于 Android 开发,还支持服务器端开发、Web 开发等。Kotlin 的优势简洁性: 相比 Java,Kotlin 代码更简洁,减少样板代码。安全性: 内置空安全机制,避免空指针异常。互操作性。原创 2024-11-19 19:08:23 · 1040 阅读 · 0 评论 -
Android开发实战班 - 第一部分:Android开发基础
前腾讯电子签的前端负责人,现 whentimes tech CTO,专注于前端技术的大咖一枚!一路走来,从小屏到大屏,从 Web 到移动,什么前端难题都见过。热衷于用技术打磨产品,带领团队把复杂的事情做到极简,体验做到极致。喜欢探索新技术,也爱分享一些实战经验,帮助大家少走弯路!温馨提示:可搜老码小张公号联系导师。原创 2024-11-19 19:01:25 · 1084 阅读 · 0 评论