理解基本的Android编程 (1/2)

news2024/11/24 17:22:16

1、Android概述

Android 是一个开源的基于 Linux 的移动设备操作系统。

Android开发优势

开放源代码

众多开发者及强大的社区

不断增长的市场

国际化的App集成

低廉的开发成本

更高的成功几率

丰富的开发环境

Android应用程序

Android 应用程序一般使用 Android 软件开发工具包,采用 Java 语言来开发。

Android API 

先解释一下API (Applicants Programming Interface),就像我们去餐厅吃饭,我们点好菜之后,api就像服务生,将我们的菜单交给厨房制作,厨房做好之后,把菜送回我们的餐桌。重点理解接口Interface。

API 级别是一个用于唯一标识 API 框架版本的整数,由某个版本的 Android 平台提供。

Android 平台提供一种框架 API,应用可利用它与底层 Android 系统进行交互。该框架 API 由以下部分组成:

  • 核心软件包和类
  • 一组用于声明清单文件的 XML 元素和属性
  • 一组用于声明和访问资源的 XML 元素和属性
  • 一组 Intent
  • 一组应用可请求的权限,以及系统中包括的权限强制执行

新 API 与早期版本的 API 会保持兼容。换言之,大多数 API 更改都是新增更改,并且会引入新功能或替代功能。

2、Android开发环境的搭建

jdk1.5以上

Android Studio

3、Android架构

Android 操作系统是一个软件组件的栈,在架构图中它大致可以分为五个部分和四个主要层。

Linux内核

在所有层的最底下是 Linux - 包括大约115个补丁的 Linux 3.6。它提供了基本的系统功能,比如进程管理,内存管理,设备管理(如摄像头,键盘,显示器)。同时,内核处理所有 Linux 所擅长的工作,如网络和大量的设备驱动,从而避免兼容大量外围硬件接口带来的不便。

程序库

在 Linux 内核层的上面是一系列程序库的集合,包括开源的 Web 浏览器引擎 Webkit ,知名的 libc 库,用于仓库存储和应用数据共享的 SQLite 数据库,用于播放、录制音视频的库,用于网络安全的 SSL 库等。

SQLite

SQLite是一款非常轻量级的关系数据库系统。一般只需要带上一个dll,就可以使用它的全部功能。        

SQLite的主要应用场景有作为手机应用的数据库以及小型桌面软件的数据库。

DLL

DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是一种软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。

SSL

SSL (Secure Sockets Layer)安全套接层。SSL是一个不依赖于平台和运用程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持

Android程序库

这个类别包括了专门为 Android 开发的基于 Java 的程序库(还有其他语言的库,比如C/C++)。这个类别程序库的示例包括应用程序框架库,如用户界面构建,图形绘制和数据库访问。一些 Android 开发者可用的 Android 核心程序库总结如下:

  • android.app - 提供应用程序模型的访问,是所有 Android 应用程序的基石。
  • android.content - 方便应用程序之间,应用程序组件之间的内容访问,发布,消息传递。
  • android.database - 用于访问内容提供者发布的数据,包含 SQLite 数据库管理类。
  • android.opengl - OpenGL ES 3D 图片渲染 API 的 Java 接口。
  • android.os - 提供应用程序访问标注操作系统服务的能力,包括消息,系统服务和进程间通信。
  • android.text - 在设备显示上渲染和操作文本。
  • android.view - 应用程序用户界面的基础构建块。
  • android.widget - 丰富的预置用户界面组件集合,包括按钮,标签,列表,布局管理,单选按钮等。
  • android.webkit - 一系列类的集合,允许为应用程序提供内建的 Web 浏览能力。

Android运行时

这是架构中的第三部分,自下而上的第二层。这个部分提供名为 Dalvik 虚拟机的关键组件,类似于 Java 虚拟机,但专门为 Android 设计和优化。

Dalvik 虚拟机使得可以在 Java 中使用 Linux 核心功能,如内存管理和多线程。Dalvik 虚拟机使得每一个 Android 应用程序运行在自己独立的虚拟机进程。

应用框架

应用框架层以 Java 类的形式为应用程序提供许多高级的服务。应用程序开发者被允许在应用中使用这些服务。

  • 活动管理者 - 控制应用程序生命周期和活动栈的所有方面。
  • 内容提供者 - 允许应用程序之间发布和分享数据。
  • 资源管理器 - 提供对非代码嵌入资源的访问,如字符串,颜色设置和用户界面布局。
  • 通知管理器 - 允许应用程序显示对话框或者通知给用户。
  • 视图系统 - 一个可扩展的视图集合,用于创建应用程序用户界面。

4、Android应用程序组件

应用程序组件是一个Android应用程序的基本构建块。这些组件由应用清单文件松耦合的组织。AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互。以下是可以在Android应用程序中使用的四个主要组件

Activities

描述UI,并且处理用户与机器屏幕的交互。一个活动标识一个具有用户界面的单一屏幕。例如,一个邮件应用程序可以包含一个活动用于显示新邮件列表,另一个活动用来编写邮件,再一个活动来阅读邮件。当应用程序拥有多于一个活动,其中的一个会被标记为当应用程序启动的时候显示

Services

处理与应用程序关联的后台操作。服务是运行在后台,执行长时间操作的组件。例如,服务可以是用户在使用不同的程序时在后台播放音乐,或者在活动中通过网络获取数据但不阻塞用户交互。

Broadcast Receivers

处理Android操作系统和应用程序之间的通信。广播接收器简单地响应从其他应用程序或者系统发来的广播消息。例如,应用程序可以发起广播来让其他应用程序知道一些数据已经被下载到设备,并且可以供他们使用。因此广播接收器会拦截这些通信并采取适当的行动。

Content Providers

处理数据和数据库管理方面的问题。内容提供者组件通过请求从一个应用程序到另一个应用程序提供数据。这些数据可以是存储在文件系统、数据库或者其他其他地方。

其他的组件

组件名称描述
Fragments代表活动中的一个行为或者一部分用户界面。
Views绘制在屏幕上的UI元素,包括按钮,列表等。
Layouts控制屏幕格式,展示视图外观的View的继承。
Intents组件间的消息连线。
Resources外部元素,例如字符串资源、常量资源及图片资源等。
Manifest应用程序的配置文件。

5、Android程序的结构

文件目录分析

文件夹、文件说明
src包含项目中所有的.java源文件,默认情况下,它包括一个 MainActivity.java源文件对应的活动类,当应用程序通过应用图标启动时,将运行它。
gen这包含由编译器生成的.R文件,引用了所有项目中的资源。该文件不能被修改。
bin这个文件夹包含Android由APT构建的.apk包文件,以及运行Android应用程序所需要的其他所有东西。
res/drawable-hdpi这个目录下包括所有的为高密度屏幕设计所需的drawable对象。
res/layout这个目录存放用于定义用户界面的文件。
res/values

这个目录存放各种各样的包含一系列资源的XML文件,比如字符串和颜色的定义。

res/menu定义应用程序菜单的XML文件,如选项菜单,上下文菜单,子菜单等。它们被保存在res/menu/文件夹下,通过R.menu类访问
res/drawable图片文件,如.png,.jpg,.gif或者XML文件,被编译为位图、状态列表、形状、动画图片。它们被保存在res/drawable/文件夹下,通过R.drawable类访问
AndroidManifest.xml这个是应用程序的清单文件,描述了应用程序的基础特性,定义它的各种组件。
local.properties        指定安卓程序所使用的SDK路径。

资源的使用

在Activity中可以通过getResources().getDrawable方法调用图片资源。

//调用以mipmap开头的文件夹中的资源文件
getResources().getDrawable(R.mipmap.ic_launcher);  

//调用以drawable开头的文件夹中的资源文件
getResources().getDrawable(R.drawable.icon);       

 在XML文件中调用图片资源

//调用以mipmap开头的文件夹中的资源文件
@mipmap/ic_launcher  

//调用以drawable开头的文件夹中的资源文件
@drawable/icon       

参考文档:

Android 教程 | 菜鸟教程

如何理解API,API 是如何工作的_仁杰兄的博客-CSDN博客

安卓版本的发展4-13_Ipkiss工作室的博客-CSDN博客

SQLite 安装与使用_sqlite安装_IT小郭.的博客-CSDN博客

什么是dll_dll文件是什么_OperatorY的博客-CSDN博客

SSL协议原理详解_ssl原理_曹世宏的博客的博客-CSDN博客

紫大-安卓期末复习-2022-6_soundpool解析_Ipkiss工作室的博客-CSDN博客

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

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

相关文章

EtherNet/IP转Modbus网关以连接AB PLC

本案例为西门子S7-1200 PLC通过捷米特Modbus转EtherNet/IP网关捷米特JM-EIP-RTU连接AB PLC的配置案例。 网关分别从ETHERNET/IP一侧和MODBUS一侧读写数据,存入各自的缓冲区,网关内部将缓冲区的数据进行交换,从而实现两边数据的传输。 网关做为…

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.4 - 负载均衡平台

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.4 - 负载均衡平台 请访问原文链接:https://sysin.org/blog/vmware-nsx-alb-22/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 负载均衡平台 NSX Advanced Load…

SpringBoot-6

Spring Boot 中的 MVC 支持 Spring Boot 的 MVC 支持主要来最常用的几个注解,包括RestController 用于声明控制器、RequestMapping用于实现方法映射地址、PathVariable 用于接受路径中的参数、RequestParam 用于接受 request 请求中的参数以及RequestBody 用于接受…

echarts 饼图中间添加文字

需求:饼图中间展示总量数据 方法一、设置series对应饼图的label属性 series: [{type: "pie",radius: [55%, 62%],center: ["67%", "50%"],itemStyle: {borderRadius: 10,borderColor: #fff,borderWidth: 2},// 主要代码在这里label: …

docker 的compose安装

1. Docker Compose 环境安装 Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose 下载 curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker…

HBase有写入数据,页面端显示无数据量

写了一个测试类,插入几条数据,测试HBase的数据量。很简单的功能,这就出现问题了。。网页端可以看到,能够看到读写请求,但是不管是内存、还是磁盘,都没有数据。 于是就想到去HDFS查看,也是有数据…

VU3-02

1.一些小点 1.1 npm i -D less (安装less) -D 安装依赖到开发环境中 只在开发中生效 正式打包的时候没有它,只在开发时有效 1.2 父子组件传参 (1)子组件中定义自己的参数和事件 父传子:const props defineProps(["item&quo…

利用读时建模等数据分析能力,实现网络安全态势感知的落地

摘要:本文提出一种基于鸿鹄数据平台的网络安全态势感知系统,系统借助鸿鹄数据平台读时建模、时序处理、数据搜索等高效灵活的超大数据存储和分析处理能力,支持海量大数据存储、分类、统计到数据分析、关联、预测、判断的网络安全态势感知能力…

MySQL索引优化分析和锁详解

MySQL 1. 索引 1.1 索引的概述 索引(index)是帮助MySQL高效获取数据的数据结构(有序) 1.2 索引的优缺点 优点 提高数据检索效率,降低磁盘IO的成本通过索引列对数据进行排序, 降低数据排序的成本,降低CPU的消耗 缺点 索引是需要…

【使用回溯法求解八皇后问题(92个解)】

在每一个横列、竖列、斜列都只有一个皇后 解决的冲突 包括行、列和两条对角线规定每一行放置一个皇后,不会造成行上的冲突 当第col列被某个皇后占领之后,则同一列上的所有空格都不能再放置皇后,并且要把flag[col]置为被占领状态 对角线有两个…

【Docker】Docker的通信安全

Docker的通信安全 前言一、Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 二、Docker 存在的安全问题1. Docker 自身漏洞2. Docker 源码问题 三、Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3. 有漏洞的系统调用4. 共享 root 用户权限 四、…

OBS 迁移--华为云

一、创建迁移i任务 1. 登录管理控制台。 2. 单击管理控制台左上角的 在下拉框中选择区域。 3. 单击“ 服务列表 ”,选择“ 迁移 > 对象存储迁移服务 OMS ”,进入“ 对象存储迁移服务 ”页面。 4. 单击页面右上角“ 创建迁移任务 ”。 5. 仔细阅读…

卡尔曼滤波算法原理及示例

例程:物体做匀速运动每秒运动1m,观测器观测方差为1m

安全学习DAY06_抓包技术-HTTPHTTPS

抓包技术-HTTP&HTTPS HTTP&HTTPS抓包针对Web&APP&小程序&PC应用等 本节目的: 掌握几种抓包工具证书安装操作掌握几种HTTP&HTTPS抓包工具的使用学会Web,APP,小程序,PC应用等抓包了解本节课抓包是针对哪些…

大数据课程C5——ZooKeeper的应用组件

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Zookeeper的Canal消费组件; ⚪ 掌握Zookeeper的Dubbo分布式服务框架; ⚪ 掌握Zookeeper的Metamorphosis消息中间件; ⚪ 掌握Zo…

Docker的安装与部署

Docker 基本概念介绍 通俗理解:镜像是类,容器是对象实例 仓库 应用商店、镜像 下载的应用安装程序、容器 应用程序 镜像(Image) 这里面保存了应用和需要的依赖环境 为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们…

【Postman】Newman安装与环境配置完整版(内含安装过程中遇到的问题与解决方案)

文章目录 概要Newman安装三步走一、nodejs安装与环境配置1、安装2、环境配置 二、安装newman1、步骤2、问题与解决方案 三、安装newman-reporter-html 概要 Newman:一款基于nodejs开发的可以运行Postman脚本的工具,并且可以生成测试报告。本文介绍了New…

【Linux】信号补充与总结

可重入函数 【分析】 mian函数正在调用insert函数向链表中插入节点。insert函数分为两步,刚刚执行完第一步时此时硬件发生中断,使进程切换到内核。中断处理完毕切换到用户态之前发现有信号未决,于是进入了信号的处理函数,信号的处…

XGBoost实例——皮马印第安人糖尿病预测和特征筛选

利用皮马印第安人糖尿病数据集来预测皮马印第安人的糖尿病,以下是数据集的信息: Pregnancies:怀孕次数Glucose:葡萄糖BloodPressure:血压 (mm Hg)SkinThickness:皮层厚度 (mm)Insulin:胰岛素 2…

硬件——光模块

简介 光模块的作用就是发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号。 常见光模块 GBIC 说明:已淘汰产品 速率:1Gbps 出现时间:2000年之前 SFP 说明:GBIC的升级 速率&…