Android架构
文章平均质量分 88
Calvin880828
关注Android最新技术,开发Android相关的技术
展开
-
Redux 与 MVI:Android 应用的对比
在为 Android 应用选择合适的状态管理架构时可能会感到困惑。在这个领域中,有两种流行的选择是 Redux 和 MVI(Model-View-Intent)。两者都有各自的优缺点,因此在深入研究之前了解它们的区别至关重要。本指南将深入探讨 Redux 和 MVI 的核心原则,突出它们在 Android 开发中的关键区别。此外,我将提供一些有用的资源链接,这些资源提供了更深入的见解和实用的实现示例。Action Creator 函数Reducer 函数Store 创建与初始化使用示例MV原创 2024-06-07 09:59:30 · 944 阅读 · 0 评论 -
Android Clean架构项目推荐
本文将分两个部分演示如何使用不同架构来构建一个简单的记事本应用。为了让大家更专注于 Clean Architecture,本文章不会过多涉及设计方面的内容。在构建过程中使用了以下技术栈:Kotlin、Jetpack Compose、协程、Room 和 Hilt。使用的开发环境是 Android Studio Iguana 和 Kotlin 1.9.22 版本。原创 2024-06-07 09:47:50 · 917 阅读 · 0 评论 -
如何赋予第三方App以AOSP系统签名权限?
OEM应用程序是指由制造商预装在Android设备上的特定应用程序。一些应用程序属于系统应用程序,需要使用系统级权限的API。这些权限和API允许应用程序与Android操作系统深度交互,并访问高级功能。系统级权限授予应用程序特权访问以执行特定操作或访问敏感资源,比如修改系统设置、访问受保护的存储、管理网络连接、控制硬件功能等。通常,厂商使用Android.bp AOSP构建配置文件和Soong构建系统来构建OEM应用程序。这样可以让厂商在Android设备上预装他们的应用程序。原创 2024-03-18 12:10:58 · 442 阅读 · 0 评论 -
如何在AOSP中添加系统Binder服务?
Android 系统服务在向高级应用程序暴露硬件和 Linux 内核的低级功能方面起着关键作用。相较于普通的 Android 服务,系统服务是由 SystemServer 启动的,因此它们作为系统进程运行,拥有普通 Android 服务无法获得的额外特权。下面是我们都熟悉的下图将帮助你了解系统服务的基本工作原理。从应用程序的中调用调用 SystemServer。原创 2024-03-08 16:26:59 · 274 阅读 · 0 评论 -
重塑Android通信新格局:探秘Android 8.0之后的Binder架构革新
在Android系统中,进程间通信(IPC)是至关重要的,不同组件之间需要相互通信以完成各自的任务。作为Android系统中最核心的进程间通信机制之一,Binder扮演着至关重要的角色。Binder通过轻量级的线程间通信方式,实现了跨进程通信,包括进程间对象传递、远程方法调用等功能。相比于传统的Socket通信或文件操作,Binder具有更高效、更快速的通信方式,使得Android系统在处理复杂的多进程场景时更加高效。原创 2024-03-06 11:33:22 · 354 阅读 · 0 评论 -
探索Android移动架构技术,提升开发效率,免费学习资料等你来领!
在学习资料中,我们将深入探讨它们的原理和使用方式,并为您提供详细的代码示例、教学视频和学习笔记。学习资料中,我们将为您介绍如何实现动态换肤功能,并提供相关视频、笔记和PPT供您深入学习。为了帮助您更好地掌握这些技术,我们精心准备了一份免费的学习资料,涵盖了移动架构中的关键概念和工具。在学习资料中,我们将向您展示如何使用插件化来实现功能模块的动态加载,同时提供实践案例、教学视频和学习笔记供您参考。在学习资料中,我们将与您分享组件化的最佳实践,并为您提供详细的教程视频、笔记和PPT。,获取免费学习资料吧!原创 2024-02-14 21:38:03 · 450 阅读 · 0 评论 -
MMKV:轻巧高效的跨平台键值存储解决方案
MMKV(Meituan Mapped Key-Value)是一款由微信团队开发的高性能、跨平台的键值存储库,旨在解决移动应用数据存储中的效率和性能问题。MMKV作为一种高性能的跨平台键值存储解决方案,具备许多优势和适用场景。高性能特点:MMKV具有卓越的读写性能,比传统的数据存储方式(如SharedPreferences)更快速有效。它采用了底层的mmap技术和序列化算法优化,以实现更高的读写速度和更低的内存占用。适用场景:MMKV特别适用于移动应用开发中需要频繁进行大量数据读写的场景。原创 2024-02-12 09:28:24 · 1495 阅读 · 0 评论 -
2024是时候进军Android Framework开发,解锁黑科技了
Android Framework核心源码笔记》是一份由资深Android开发者所编写的资料,其中包含了很多他在多年Android Framework开发中积累的经验与技巧。这份资料不仅涵盖了Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher等关键知识点的记录,还提供了丰富的案例和代码示例,方便读者更好地理解并运用所学知识。该资料的作者是一位前三星项目经理,拥有十年以上的Android底层框架经验。原创 2024-02-06 15:46:37 · 1191 阅读 · 0 评论 -
超越传统—Clean架构打造现代Android架构指南
Clean 架构是一种现代的软件架构设计原则,旨在解决传统 Android 架构的问题,提高代码的可维护性、可测试性和可扩展性。它的核心思想是通过解耦合和依赖反转来实现高内聚低耦合的代码结构。原创 2024-01-30 12:12:53 · 2032 阅读 · 0 评论 -
Android Clear架构最强官方指南Kotlin版
模块化是一种将代码的逻辑组件分离并创建清晰边界的方法。如果你已经做了功课,并且看过我之前关于Android架构的帖子,你可能已经注意到我使用Android模块来表示每个层级的架构。在讨论中,一个常见的问题是:为什么要这样做?答案很简单… 这是为了避免错误的技术决策。通过建立更严格的依赖规则和边界,我们可以减少模块之间的相互影响。然而,权力伴随着巨大的责任。当我们修改或添加新功能时,我们必须同时修改每个单独的模块/层(因为它们之间存在强依赖/耦合)。原创 2024-01-29 12:24:59 · 1485 阅读 · 0 评论 -
43.5k star Android架构最佳实践项目
该项目在不同的存储库分支中托管了每个示例应用程序。想了解更多信息,请查看每个分支中的README.md文件。示例描述main这个分支是主分支。一个简单的设置,使用服务定位器代替Hilt。livedata使用LiveData作为数据流解决方案,而非StateFlow。usecases添加了一个新的领域层,使用UseCases处理业务逻辑(尚未使用Compose)。views使用Views而非Jetpack Compose来渲染UI元素。views-hilt同时使用Views和Hilt。原创 2024-01-23 14:25:04 · 1144 阅读 · 0 评论 -
数10亿设备正在运行的开源项目AOSP
AOSP(Android 开源项目)是与流行的智能手机系统 Android 一同运行的各种应用程序的基础。不同的手机制造商如三星、华为、索尼和谷歌,在基本的 Android 操作系统上添加了自己的定制功能和想法。AOSP 是一个开源的操作系统开发项目,由谷歌拥有和监督。任何人都可以自由地为 AOSP 贡献代码和修复程序,但谷歌负责整体方向和部分开发过程的管理。AOSP 定期获取适用于 Android 的最新错误修复和安全补丁。谷歌还在每年的 I/O 开发者大会上公布操作系统的关键新功能。原创 2024-01-11 14:21:13 · 1145 阅读 · 0 评论 -
如何在2024年编写Android应用程序
在 Kotlin 中,注解是一种元数据形式,您可以将其添加到代码中,以提供有关代码元素(如类、函数或属性)的额外信息。Kotlin 中的注解类似于 Java 中的注解。在这里,原创 2024-01-01 17:54:01 · 1500 阅读 · 0 评论 -
Android Telephony概览
Android架构的顶层,包括用户互动的所有应用程序,如设备上安装的应用程序。供应商RIL实际上是Modem的软件代码,Modem硬件供应商提供与该Modem相对应的软件,以便硬件和供应商之间的通信能够顺利进行,数据可以轻松地从硬件传输到供应商RIL到较高层。我们知道我们的Android操作系统设备配置有多个网络功能,我们在日常生活中经常使用,如电话呼叫、短信、彩信、数据、SIM卡和其他网络功能。所有这些与网络相关的支持都属于电话。一个软件模块或软件包,包含与电话相关的类和库,被称为电话框架。原创 2023-12-19 20:23:26 · 686 阅读 · 0 评论 -
Android系统IPC机制
在安卓系统上,我们知道每个应用都在自己的进程中运行。当应用加载时,应用程序管理器通知Zygote。Zygote分叉自身并复制虚拟机(VM)。因此,应用程序获得一个具有加载库的“热”VM。每个安卓应用都是沙盒化的,因此每个进程相互独立。沙盒概念用于管理或包含不同级别的权限,限制在每个个体应用中。因此,它需要IPC来在应用/服务/系统服务之间进行通信。在一个进程下,可能有多个线程,它们共享进程内存,但有自己的堆栈。IPC是任何软件系统/操作系统的基础。安卓提供了两种实现IPC的方式。原创 2023-12-19 19:24:08 · 774 阅读 · 0 评论 -
Android面向对象编程范式
后来,诸如 C++、Java、Python 和 C# 等语言也采用了这种方法,在行业中产生了更易于管理、可持续和可维护的项目。然而,随着时间的推移,软件范式出现是为了解决各种问题、缺陷和最重要的需求。通过创建类的对象,我们可以访问和实现该类的属性和方法。我们可以使用数据库对象提供的函数访问数据,但我们不知道它是如何存储和管理的。现在,让我们来看看 OOP 的基础知识以及支撑这个使我们的项目更加模块化的范式。1- 类能将代码分解为更小的可管理组件。2- 可重用性:基础类或数据类型的抽象增加了代码的可重用性。原创 2023-10-17 16:18:28 · 163 阅读 · 0 评论 -
Jetpack Compose 的简单 MVI 框架
Model:表示应用程序或特定屏幕的状态以及生成该状态的业务逻辑。View:表示用户交互的 UI。Intent:这些是触发新模型的操作,可以是来自用户或外部的操作。需要注意的是,在MVI中状态是不可变的,并且MVI遵循单向数据流。基本流程如下:生成初始模型,并将其推送到视图进行渲染。用户或外部因素(例如网络加载完成)触发一个操作(即意图)。意图在业务逻辑中进行处理,生成一个新的模型,并将其发布到视图。循环无限重复。原创 2023-09-22 11:36:52 · 1049 阅读 · 1 评论 -
Android安全机制介绍及实践
上图是我们熟知的Android系统架构图,分层的结构有利于权限的分级管理,对系统安全提供了一定的保障。Android系统采用分层的架构,由底层到上层依次为Linux内核层、HAL层、Native Lib及Runtime lib层、JNI层、framework层和应用程序层组成。Android应用程序组件是Android应用程序的基本组成单元,组件类型有Activity、Service、Broadcast Receiver、Content Provider等。原创 2023-09-19 11:04:45 · 512 阅读 · 0 评论 -
解密Android开发中的依赖注入:构建可维护的现代应用
依赖注入(Dependency Injection,DI)是一种软件设计模式,旨在降低模块之间的耦合度,增强代码的可维护性和可测试性。在依赖注入中,组件不再负责直接创建它所依赖的对象,而是将这些依赖通过外部传递进来。这种方式可以通过构造函数、方法参数、属性注入等方式实现。2.1 依赖注入的优势传统的依赖创建方式通常需要在代码中直接创建和初始化依赖对象,导致高度耦合的情况。而通过依赖注入,依赖的创建和管理被移到了外部,使得组件只需要关心接口而不需要关心具体实现,从而实现了组件之间的解耦合。原创 2023-08-16 09:58:47 · 454 阅读 · 0 评论 -
Android Jetpack Compose 中的分页与缓存展示
在几乎任何类型的移动项目中,移动开发人员在某个时候都会处理分页数据。如果数据列表太大,无法一次从服务器检索完毕,这就是必需的。因此,我们的后端同事为我们提供了一个端点,返回分页数据列表,并期望我们知道如何在客户端处理它。在本文中,我们将重点介绍如何使用 Android 在 2023 年 6 月推荐的最新方法来获取、缓存和显示分页数据。对于示例项目,我将在文章末尾分享 GitHub 存储库链接,我们将使用 Hilt 作为我们的依赖注入库,并使用干净架构(表示层 → 领域层 ← 数据层)。原创 2023-08-14 12:08:41 · 2327 阅读 · 0 评论 -
利用ViewModel和LiveData进行数据管理
在Android应用中,ViewModel是一种设计模式,用于管理UI相关的数据和业务逻辑。它主要解决了由生命周期引起的数据丢失、内存泄漏和重复加载数据等问题。ViewModel的设计思想是将UI和数据分开,使得数据在配置更改、Activity或Fragment销毁重建等情况下能够持久保留。ViewModel的主要作用是存储和管理与UI相关的数据,如界面元素的状态、用户输入等。通过ViewModel,我们可以在不同的配置更改和生命周期事件之间保持数据的一致性,避免了重新加载数据带来的性能问题和用户体验下降。原创 2023-08-14 09:27:03 · 760 阅读 · 0 评论 -
重磅!官方Android现代开发指南发布!
官方整合了6大模块来定义什么是现代Android开发。Compose:构建富有吸引力的界面Kotlin:现代简洁功能强大的语言Jetpack:简化应用开发的组件库Android Studio:为开发者提供强大的生产力工具以Android最新版本为目标平台提供架构及测试最佳实践。原创 2023-08-08 11:21:31 · 122 阅读 · 0 评论 -
Android数据存储选项:SQLite、Room等
Room是Android Jetpack架构组件的一部分,旨在简化SQLite数据库的操作。它为开发者提供了一种方便的方式来定义实体类、DAO(数据访问对象)接口以及数据库的初始化。Room在背后使用了SQLite数据库来存储数据,但在开发者的视角下提供了更高层次的抽象。原创 2023-08-08 09:47:11 · 1432 阅读 · 0 评论 -
探索Android应用架构模式:选择适合你的开发之路
模型代表应用程序的数据和业务逻辑。它负责处理数据的读取、写入和修改,以及处理与数据相关的操作。模型与数据存储和处理有关,例如从数据库或网络获取数据,对数据进行处理,然后提供给视图层。视图是用户界面的表示。它负责显示数据和呈现用户界面元素。视图将模型中的数据呈现给用户,并处理与用户交互的部分,如点击、滑动等。控制器是连接模型和视图的桥梁。它接收用户输入并对其进行处理,然后通知模型和视图进行相应的操作。控制器负责业务逻辑的处理,将用户输入映射到模型操作和视图更新。与MVC类似,模型代表应用程序的数据和业务逻辑。原创 2023-08-04 16:29:44 · 785 阅读 · 0 评论 -
一个灵活、现代的Android应用架构
我们要为行星观测者构建一个应用。它将大致如下所示:已发现的所有行星的列表添加刚刚发现的新行星的方式删除行星的方法(以防你意识到你的发现实际上只是望远镜镜头上的污迹)添加一些示例行星,让用户了解应用的工作方式它将具有离线数据缓存以及在线访问数据库的功能。像往常一样,在我的步骤指导中,我鼓励你偏离常规:添加额外的功能,考虑可能的未来规格变化,挑战自己。在这里,学习的重点是代码背后的思考过程,而不仅仅是代码本身。因此,如果你想从这个教程中获得最佳效果,请不要盲目复制代码。原创 2023-07-25 14:13:13 · 1398 阅读 · 1 评论 -
领域驱动中的Android开发
我们首先定义一个Coupon类,它是一个实体(Entity)。实体代表我们领域的主要概念。每个实体的实例都有唯一的标识。我们可以通过id属性来识别Coupon。除了实体(Entities),我们的模型还可以包含值(Values)。与实体不同,值没有标识和生命周期。每个实体由值或其他嵌套实体构建。在Coupon中,我们没有任何嵌套实体,只有值(Values)。当值(Value)有多个字段时,我们可以使用数据类(data class)来表示它。原创 2023-07-17 10:42:33 · 155 阅读 · 0 评论 -
Clean架构与MVVM:助你打造优质Android应用
Android应用程序开发可能具有挑战性,特别是在创建可扩展和可维护的代码以适应不断变化的需求和用户需求方面。为了解决这个挑战,开发者通常依赖于软件架构模式,为代码组织和关注点分离提供了坚实的基础。在Android开发中,两种流行的架构模式是和Clean架构。这两种方法都强调模块化、可测试性和关注点分离,但它们在具体实施细节上有所不同。在本文中,我们将探讨如何结合MVVM和Clean架构来创建健壮且易于测试、扩展和维护的Android应用程序。我们还将介绍使用这种强大组合的最佳实践和实现技巧。原创 2023-06-14 14:55:35 · 993 阅读 · 0 评论 -
Jetpack Compose 的最佳处理运行时权限的方法
如果您的应用安装在运行Android 6.0(API级别23)或更高版本的设备上,则必须按照本指南中的步骤为用户请求运行时权限。在Jetpack Compose中获取运行时权限有两种方法。接下来,让我们仔细研究上述两种方法,并附有示例。原创 2023-06-02 14:33:15 · 1829 阅读 · 0 评论 -
Android中的WorkManager
在后台运行任务会消耗设备有限的资源,如RAM和电池。这可能会导致用户体验不佳。例如,后台任务可能会降低设备的电池寿命或用户在观看视频、玩游戏、使用相机等时可能会遇到设备性能不佳的情况。为了提高电池性能,Android在早期版本中发布了一些资源,如Doze模式、应用程序待机、限制位置访问和其他一些内容。原创 2023-06-02 14:10:21 · 1572 阅读 · 0 评论 -
2023年Android开发者路线-第4部分
在上一篇博文中,我们讨论了现代 Android 开发的基本要素,包括 Fragments、App Navigation、Architecture Components 和 Android Jetpack 库。原创 2023-05-15 15:59:21 · 1197 阅读 · 0 评论 -
2023年Android开发者路线-第3部分
在上一篇文章中,我们讨论了 Android 主要组件的重要元素,包括 Intents 和 App Entry Points。原创 2023-05-15 16:01:07 · 816 阅读 · 0 评论 -
2023年Android开发者路线-第2部分
在上一篇文章中,我们讨论了 Android 架构的重要元素,包括主要的 Android 语言、操作系统、Android 平台和 App Manifest。原创 2023-05-15 15:59:27 · 1005 阅读 · 0 评论 -
2023年Android开发者路线-第1部分
Java API 框架是用 Java 和 Kotlin 编写的 Android 库的集合,提供了 Android 操作系统的整个功能集。Android API 包括可扩展的视图系统、可重用的组件和系统管理器,它们用于通过简化接口的重用来构建您的 Android 应用程序。但为什么是 Java?在这个由多个部分组成的系列中,您将按照我们的2023 年 Android 开发者路线图了解有关 Android 开发生态系统的所有信息,让您更全面地了解 Android 社区以及作为开发者如何取得进步。原创 2023-05-15 11:53:34 · 1986 阅读 · 0 评论 -
Jetpack Compose 中使用分页 API 调用的无限滚动
最近,我在DashCoin 的硬币屏幕上添加了一个带有分页 API 调用的无限滚动。它使浏览硬币列表变得非常困难,并且确实减少了初始加载时间,比以前少了。如果没有正确实施,实施无限滚动可能会很棘手。它可以轻松触发重新压缩并导致无限的 API 调用。原创 2023-04-24 15:51:14 · 941 阅读 · 0 评论 -
Android安全性:保护你的应用和用户数据
安全性是指保护应用和用户数据免受未经授权的访问、攻击或泄露的能力。在Android应用开发中,安全性是一个重要的关注点,开发者需要在设计和开发过程中考虑各种安全性方面,以确保应用和用户数据的安全。首先,应用开发者需要关注认证和授权。认证是验证用户身份的过程,授权是决定用户是否具有执行特定操作的权限。在应用中,开发者应该使用安全的认证和授权机制,例如使用强密码、多因素认证等来保护用户账户的安全。此外,应用应该限制用户访问和操作的权限,只授权必要的权限,避免过度授权导致的安全风险。原创 2023-04-19 18:15:25 · 1589 阅读 · 0 评论 -
Android中的MVVM架构:使用Jetpack组件实现现代化的应用架构
MVVM架构是一种基于数据绑定的架构模式,它将应用程序分为三个主要组件:Model、View和ViewModel。每个组件有着不同的职责和功能:Model:负责处理数据层的逻辑,包括数据的获取、存储和处理等。它可以是数据库、网络接口、API等。View:负责用户界面的展示和用户输入的处理。它可以是Activity、Fragment、XML布局文件等。原创 2023-04-19 17:47:35 · 2230 阅读 · 0 评论 -
Android中的多线程编程与异步处理
在移动应用开发中,用户体验是至关重要的。一个流畅、高效的应用能够吸引用户并提升用户满意度。然而,移动应用面临着处理复杂业务逻辑、响应用户输入、处理网络请求等多个任务的挑战。为了确保应用的性能和用户体验,多线程编程和异步处理成为了不可或缺的技术手段。在移动应用中,涉及到耗时操作的任务包括但不限于:网络请求、数据库操作、图片加载、文件读写等。如果这些耗时操作都在应用的主线程(也称为UI线程)中执行,将导致应用界面的卡顿、卡死,甚至导致应用无响应(ANR)的错误。原创 2023-04-19 17:00:52 · 2642 阅读 · 0 评论 -
最佳实践:Android应用中的网络请求和数据缓存
选择合适的网络请求库:介绍常用的网络请求库,并根据应用需求和场景选择合适的网络请求库,包括使用Android自带的HttpURLConnection和HttpClient库,以及流行的第三方库如OkHttp、Retrofit等,并对它们的特点、优缺点进行比较和选择建议。优化网络请求:介绍网络请求的性能优化技巧,包括合理的请求方式选择、减少请求次数、优化请求参数和响应数据、合理设置请求超时和重试策略、使用连接池等方式,提高网络请求的效率和性能。原创 2023-04-19 15:22:28 · 2957 阅读 · 0 评论 -
我如何学习使用 Jetpack Compose 开发 Android 应用程序
2021 年 7 月,Google 发布了用于为 Android 应用构建原生 UI 的全新工具包 1.0 版。Jetpack Compose 是 Android 开发人员的游戏规则改变者,因为它从通过 XML 设计的 UI 转变为完全动态的声明式编程。是一种编程方法,开发人员定义所需的输出或结果,而不是指定实现它所需的步骤。在 Android Jetpack Compose 的上下文中,声明式编程意味着开发人员描述 UI 元素及其行为,而框架会根据需要自动负责渲染和更新它们。原创 2023-04-18 17:27:36 · 717 阅读 · 0 评论 -
深入剖析:如何优化Android应用的性能和内存管理
本文介绍了在Android应用开发中性能优化和内存管理的重要性,并提供了一些优化性能和提高用户体验的技巧和方法。从应用启动速度、加载速度、电量和网络性能等方面,团队可以采取措施来提升应用的性能和用户满意度。首先,团队可以通过优化应用的启动速度和加载速度,如使用冷启动优化、应用分模块加载、资源压缩等方式,缩短应用的启动时间,提高用户体验。原创 2023-04-17 18:57:04 · 1258 阅读 · 0 评论