安卓开发(二)Android开发基础知识

了解Android

Android大致可以分为4层架构:Linux内核层、系统运行库层、应用框架层和应用层。

  • 内核层:Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。
  • 系统运行库层:提供一些特性支持,如数据库支持,OpenGL ES提供3D绘图支持,webkit库提供浏览器内核支持。在这一层还有Android运行时库,它主要提供了一些核心库,允许开发者使用Java语言来编写Android应用。另外,Android运行时库中还包含了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得每一个Android应用都能运行在独立的进程中,并且拥有一个自己的虚拟机实例。相较于Java虚拟机,Dalvik和ART都是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况做了优化处理。
  • 应用框架层这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者可以使用这些API来构建自己的应用程序。
  • 应用层:用户安装的所有应用

版本发布:08年Google发布1.0,14年发布5.0,目前一年一个新版本,已经发布到Android 14。

四大组件

Android系统四大组件分别是Activity、Service、BroadcastReceiver和ContentProvider。

  • Activity负责管理用户与应用界面的交互。Activity类是Android系统提供的一个基类,我们项目中所有自定义的Activity都必须继承它或者它的子类才能拥有Activity的特性。该类有个onCreate()方法,这个方法是一个Activity被创建时必定要执行的方法。
  • BroadcastReceiver允许你的应用接收来自各处的广播消息,比如电话、短信等,当然,你的应用也可以向外发出广播消息。
  • ContentProvider则为应用程序之间共享数据提供了可能,比如你想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现。

安卓的应用对象分为模型、视图和控制器三类。Android应用基于模型-视图-控制器(Model-View-Controller,MVC)的架构模式进行设计。MVC设计模式表明,应用的任何对象,归根结底都属于模型对象、视图对象以及控制器对象中的一种。
模型对象存储着应用的数据和“业务逻辑”。模型类通常用来映射与应用相关的一些事物,比如用户、商店里的商品、服务器上的图片或者一段电视节目
视图对象知道如何在屏幕上绘制自己,以及如何响应用户的输入,比如触摸动作等。一条简单的经验法则是,只要能够在屏幕上看见的对象,就是视图对象。Android自带很多可配置的视图类例如Button等。当然,你也可以定制开发其他视图类。应用的全部视图对象组成了视图层。
请添加图片描述

控制器对象含有应用的“逻辑单元”,是视图对象与模型对象的联系纽带。控制器对象响应视图对象触发的各类事件,此外还管理着模型对象与视图层间的数据流动。在Android的世界里,控制器通常是Activity或Fragment的子类

项目结构

  • gradle.properties这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
  • app文件夹,项目的主要主体,也是我们主要的工作目录
    • build:编译自动生成的相关中间文件
    • libs:第三方jar包
    • AndroidTest,安卓测试用例
    • java:java代码
    • res:资源目录,图片放在drawable目录下,布局放在layout下,图标文件放在mipmap文件夹下,字符串也算资源,放在value下
    • AndroidManifest.xml这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册。
    • proguard-rules.pro这个文件用于指定项目代码的混淆规则,当代码开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。

layout就是布局,安卓可以在代码中创建视图类,也可以使用xml定义视图layout。

辅助

  • 日志类:Log: Android中的日志工具类是Log(android.util.Log)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CANdela/Diva系列2--CANdela Studio的工作树介绍1

本系列的第一篇文章(CANdela/Diva系列1--CANdela Studio的基本介绍)主要介绍了CANdela这个工具,本篇文章将对CANdela Studio的工作树的每个模块进行详细介绍,不啰嗦,直接开始! 目录 1. ECU Information的…

Activiti工作流中的自定义代理人、候选人与候选组

前言 在Activiti这一强大开源的工作流引擎中,灵活地管理任务的处理流程是其核心功能之一。其中,“代理人”、“候选人”与“候选组”是实现任务分派和审批流程的关键概念。本文将深入解析这三个概念的区别、定义及其在实际工作流设计中的应用。 1. 代理…

技术速递|使用 .NET 为 Microsoft AI 构建可扩展网关

作者:Kara Saucerman 排版:Alan Wang Microsoft AI 团队构建了全面的内容、服务、平台和技术,以便消费者在任何设备上、任何地方获取他们想要的信息,并为企业改善客户和员工的体验。我们的团队支持多种体验,包括 Bing、…

MapReduce的Shuffle过程

Shuffle是指从 Map 产生输出开始,包括系统执行排序以及传送Map输出到Reduce作为输入的过程. Shuffle 阶段可以分为 Map 端的 Shuffle 阶段和 Reduce 端的 Shuffle 阶段. Shuffle 阶段的工作过程,如图所示: Map 端的 Shuffle 阶段 1)每个输入分片会让一个 Map 任务…

【探索Java编程:从入门到入狱】Day4

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台

YoloDeployCsharp|基于.NET Framework的YOLO深度学习模型部署测试平台 1. 项目介绍2. 支持模型3. 时间测试4. 总结 1. 项目介绍 基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系…

MySql数据库(概念篇)

数据库概念 什么是数据库 数据库见名之意,就是用来存储数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 没接触数据库之前,一般都是将数据存储在文件中。比如execl文件,word文件中。但是…

基于SpringBoot的饭店外卖平台的设计与实现

项目描述 这是一款基于SpringBoot的饭店外卖平台的系统 模块描述 用户端 登录 首页 商家信息 点餐 菜品列表 下单 订单列表 账号下单列表 个人中心 个人资料 修改信息 评论管理 评论菜品 查看评论 打赏骑手 打赏骑手 管理员 登录 菜品管理 修改 下架 订单列表 下单记录 菜品管理…

tftp 服务部署

这个服务挺简单的,但是今天用到了,还是写一下把 简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于 UDP 协议在客户端 和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不…

nginx 负载均衡、反向代理实验

nginx 负载均衡、反向代理实验 实验目的 理解概念:明确反向代理和负载均衡的基本概念及其在网络架构中的作用。 掌握技能:学习如何配置Nginx以实现反向代理和负载均衡功能。 实践应用:通过实际操作,体验Nginx如何提升Web服务的可…

LeetCode406:根据身高重建队列

题目描述 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数…

ubuntu下qrencode arm 环境编译和使用

我有一个Linux 环境 V3S的qrm开发板,我需要在开发板上实现一个生成二维码的功能,于是想到了qrencode 这个库。 过程如下: 1,下载qrencode 源码(自行百度下载) 2,打开源码,可以看到源码里有一个configure…

TinyXML-2介绍

1.简介 TinyXML-2 是一个简单、小巧的 C XML 解析库,它是 TinyXML 的一个改进版本,专注于易用性和性能。TinyXML-2 用于读取、修改和创建 XML 文档。它不依赖于外部库,并且可以很容易地集成到项目中。 tinyXML-2 的主要特点包括&#xff1a…

外设寄存器的映射到内存地址空间的过程

外设寄存器的映射到内存地址空间的过程称为内存映射I/O(Memory-Mapped I/O,MMIO)。这种映射是硬件设计的一部分,在芯片设计过程中由硬件工程师完成。以下是这个过程的一些重要步骤: 硬件设计:在微控制器或处…

你是我的荣耀 | 林先生:从酷爱数学到毕业走向数据分析岗位

人物背景: 研究生国家奖学金、本科生国家奖学金、学业奖学金一等奖、上海市优秀毕业生; 应用统计专业 CPDA优秀学员 ## 为什么选择数据分析相关专业 我是应用统计专业的一个应届毕业生,目前在一家上海市属的国企,从事数据分析相关…

远程工作的数据安全挑战和解决策略

随着远程工作的普及,数据安全面临了前所未有的挑战。企业在应对这些挑战时,必须采取切实有效的策略来保护敏感信息。以下是远程工作数据安全的主要挑战和相应的解决策略: 数据安全挑战 设备丢失或被盗:员工在外工作时&#xff0c…

ldap对接jenkins

ldap结构 配置 - jenkins进入到 系统管理–>全局安全配置 - 安全域 选择ldap - 配置ldap服务器地址,和配置ldap顶层唯一标识名 配置用户搜索路径 - 配置管理员DN和密码 测试认证是否OK

小组练习:请列出关于创新感受最深的几点启发

创新是推动社会进步的关键因素:无论是科技、教育、艺术、商业还是其他领域,创新都是推动其发展的主要动力。只有不断创新,才能使社会不断发展和进步。 创新需要勇气和决心:创新往往意味着打破常规,挑战现状。这可能会…

AIGC技术带给我们什么?基于AIGC原理及其技术更迭的思考

AIGC技术带给我们什么?基于AIGC原理以及技术更迭的思考 前言 AI,这个词在如今人们的视野中出现频率几乎超过了所有一切其他的事物,更有意思的是,出现频率仅次于这个词的,几乎都会加上一个修饰亦或是前缀——AI&#…

ROS机器人实用技术与常见问题解决

问题速查手册(时实更新)更加全面丰富的问题手册记录 1.机器人使用GPARTED挂载未分配空间 需要在图型界面下操作,建议使用no machine连接 安装gparted磁盘分区工具, sudo apt-get install gparted -y 启动软件 sudo gparted 点击磁盘/内存…