学习Android的第一天

目录

什么是 Android?

Android 官网

Android 应用程序

Android 开发环境搭建

Android 平台架构

Android 应用程序组件

附件组件

Android 第一个程序 HelloWorld


什么是 Android?

Android(发音为[ˈænˌdrɔɪd],非官方中文名为“安卓”)是一个基于Linux核心与其他开源软件的开放源代码的移动操作系统。它由谷歌成立的开放手持设备联盟持续领导与开发。Android操作系统的核心是Android开源项目(AOSP),它是根据Apache许可证授权的免费开源软件。然而,大多数设备使用谷歌开发的专有Android版本,预装谷歌移动服务等专有软件。尽管AOSP是免费的,但“Android”名称和徽标是谷歌的商标,谷歌可以限制未经认证的设备不得使用Android品牌和谷歌的专有版本。

Android的起源可以追溯到2003年10月,当时由安迪·鲁宾(Andy Rubin)、利奇·米纳尔(Rich Miner)、尼克·席尔斯(Nick Sears)、克里斯·怀特(Chris White)在加州帕罗奥图创建了Android Inc. 最初,Android是为创建一款先进数字相机的操作系统而开发的,但后来由于相机市场规模不足,发展方向转变为智能手机系统。在2005年7月11日,Android Inc.被Google收购。

2007年11月,Google与84家硬件制造商、软件开发商及电信营运商成立了开放手持设备联盟,共同研发Android。Google以Apache免费开放源代码许可证的授权方式,发布了Android的源代码,加速了Android的普及,使生产商能够推出搭载Android的智能手机,后来逐渐拓展到平板电脑及其他领域上。

在2010年末,Android操作系统的市场占有率超越了长期称霸的诺基亚Symbian系统,成为全球第一大智能手机操作系统。在2014年的Google I/O开发者大会上,Google宣布过去30天里有10亿台活跃的Android设备。2017年3月,Android全球网络流量和设备超越了Microsoft Windows,正式成为全球第一大操作系统。截至2023年2月,除了美国、英国、加拿大、巴哈马、冰岛、挪威、瑞典、丹麦、瑞士、科索沃、日本、台湾和澳大利亚外,Android在其他所有国家和地区都是最被广泛使用的智能手机操作系统。

Android 官网

Android 的官方网站是:https://developer.android.com/?hl=zh-cn

Android 应用程序

Android应用程序通常使用Android软件开发工具包(Android SDK)进行开发,采用Java语言来编写。Android SDK提供了丰富的工具和库,使开发者能够创建各种类型的应用程序,包括社交媒体应用、游戏、生产力工具等。

一旦应用程序开发完成,开发者可以使用Android SDK将应用程序打包成APK(Android Package)文件。这个APK文件可以通过各种渠道发布和分发,包括Google Play商店、亚马逊应用商店等。在这些应用商店上,用户可以轻松地搜索、下载和安装Android应用程序。

Android在全球范围内拥有庞大的用户基础,存在于190多个国家,并且有数以百万计的移动设备。这使得Android成为全球最大的移动平台之一,并且其安装基础在快速增长。每天都有超过100万个新的Android设备被激活,这显示了Android生态系统的广泛普及和影响力。

Android 开发环境搭建

Android studio开发环境搭建可以参考这篇文章:

2023最新版Android studio安装入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

Android studio里的插件市场是没有汉化插件的,如果真的需要汉化的话,可以参考这篇文章:

Android studio中文汉化详细教程_android studio汉化

Android 平台架构

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

架构的简单理解:

  1. Linux内核:

    • 位于最底层,提供核心系统服务,包括硬件驱动、内存管理、进程管理等。
    • 处理底层硬件与设备的交互。
  2. Libraries(库) + Android Runtime(Android运行时):

    • Libraries包括一组C/C++库,用于不同组件,如媒体框架。
    • Android Runtime由Android核心库集和Dalvik虚拟机(或ART)组成,负责运行Android应用程序的字节码。每个应用程序在独立的虚拟机(Dalvik进程)中运行,提高安全性和独立性。
  3. Application Framework(应用程序框架层):

    • 提供应用程序开发的API集合,无论是系统内置还是用户自己编写的应用。
    • 使用Java语言进行开发。
    • 可通过该层实现诸如电话管理(TelephonyManager)等功能,而不必关心底层实现。
  4. Application(应用程序层):

    • 包括系统内置的一组应用程序和用户自己开发的应用。
    • 使用Java语言进行开发,通过应用程序框架层提供的API与设备进行交互。

Android 应用程序组件

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

以下是可以在Android应用程序中使用的四个主要组件。

组件描述
Activities描述UI,并且处理用户与机器屏幕的交互。
Services处理与应用程序关联的后台操作。
Broadcast Receivers处理Android操作系统和应用程序之间的通信。
Content Providers处理数据和数据库管理方面的问题。

Activities(活动):

  • 一个活动代表了应用程序界面的一个单一屏幕。
  • 每个活动都是Activity类的子类,负责处理用户与应用程序之间的交互。
  • 通常,一个应用程序由多个活动组成,每个活动负责一个特定的用户界面或交互场景。
  • 例如,在一个邮件应用中,可以有一个活动用于显示收件箱,另一个用于写新邮件,以及一个用于阅读邮件。
  • 当应用程序启动时,会显示一个被标记为启动活动的界面。

 如下所示:

public class MainActivity extends Activity {}

在示例中,MainActivity是一个活动的示例,它继承自Activity类。在这个类中,你可以实现与用户界面相关的逻辑,处理用户输入,并定义活动的行为。

Services(服务):

  • 服务是一种在后台执行长时间运行操作的组件,即使用户切换到其他应用程序或者屏幕关闭,服务仍然可以继续运行。
  • 服务通常用于执行那些不需要用户直接交互的任务,如在后台播放音乐、下载数据、处理定期任务等。
  • 服务可以由应用程序的多个组件共享,它们与活动(Activity)、广播接收者(Broadcast Receiver)等组件协同工作。
public class MyService extends Service {}

在示例中,MyService是一个服务的示例,它继承自Service类。在服务中,你可以实现需要在后台执行的逻辑,例如音乐播放、数据下载等。需要注意的是,服务运行在应用程序的主线程中,因此如果执行耗时操作,应考虑使用后台线程或异步任务以避免阻塞主线程。

Broadcast Receivers(广播接收器):

  • 广播接收器是一种组件,用于响应来自其他应用程序或系统的广播消息。
  • 广播消息是以Intent对象的形式广播的,可以是系统级的(例如设备启动完成)或应用程序级的(例如数据下载完成)。
  • 广播接收器能够拦截这些广播消息,并采取适当的行动,如更新UI、触发某些操作等。
  • 广播接收器可用于在应用程序内部的组件之间进行通信,或者与系统和其他应用程序进行交互。
public class MyReceiver  extends  BroadcastReceiver {}

在示例中,MyReceiver是一个广播接收器的示例,它继承自BroadcastReceiver类。在这个类中,你可以覆盖onReceive()方法,定义接收到广播时应该执行的逻辑。需要注意的是,广播接收器的执行时间应尽量短,以避免在主线程中执行过长时间的任务。

Content Providers(内容提供者):

  • 内容提供者是一种组件,用于实现数据的共享和访问,允许一个应用程序的数据被其他应用程序请求和使用。
  • 通过内容提供者,应用程序可以向外部提供对其数据的访问权限,这通常包括对数据库、文件系统或其他数据存储的访问。
  • 数据请求由ContentResolver类的方法处理,它可以跨应用程序进行数据查询、插入、更新和删除。
  • 内容提供者通常以标准的API形式提供数据,这使得不同应用程序可以以一致的方式与数据进行交互。
public class MyContentProvider extends  ContentProvider {}

在示例中,MyContentProvider是一个内容提供者的示例,它继承自ContentProvider类。在内容提供者中,你需要实现一套标准的API,包括query()、insert()、update()、delete()等方法,以便其他应用程序可以通过ContentResolver来执行这些操作。

附件组件

有一些附件的组件用于以上提到的实体、他们之间逻辑、及他们之间连线的构造。这些组件如下:

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

Android 第一个程序 HelloWorld

运行结果(第一次加载有点慢):

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

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

相关文章

【selenium方式】获取微博指定用户指定日期内所有帖子详细数据

这篇文章主要放源代码,思路不会介绍特别清楚,详细思路可以看评论区的b站讲解视频。 1.场景需求 获取微博肖战超话内容部分用户的帖子数据,日期范围限定在近2个月,要求获得帖子的发布时间、帖子文本内容、转发数据、评论数据和点…

【Go 快速入门】包及依赖管理 | Go 第三方包发布 | 接口 | 反射

文章目录 包和依赖管理依赖管理go modgo get go.mod 文件go.sum 文件Go Modules 发布包 接口空接口接口值类型断言 反射reflect.TypeOfreflect.ValueOf结构体反射 项目代码地址:04-PackageInterfaceReflection 包和依赖管理 Go 使用包来支持代码模块化和代码复用&…

市场复盘总结 20240201

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 昨日主题投资 连板进级率 6/27 22.2% 二进…

AI 原生时代的云计算

本文整理自2023年 12 月 20 日举办的「2023 百度云智大会智算大会」主论坛,百度副总裁谢广军的主题演讲《AI 原生时代的云计算》。 (视频回放链接:https://cloud.baidu.com/summit/aicomputing_2023/index.html) 大模型的到来&…

一些大语言模型(LLM)相关的开源项目

一些大语言模型(LLM)相关的开源项目 更多文章访问: https://www.cyisme.top 因为站内限制问题,有些图片无法显示,导致阅读体验较差,可以访问原文:《一些大语言模型(LLM)相关的开源项…

揭秘远程控制APP的便捷之美!

在这个科技日新月异的时代,我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机,你是否也有遇到过需要远程操作自己某一台手机的场景呢?今天,我要向大家推荐一款神奇的手机远程操作神器,让你可以随时随地…

(2)(2.11) RFD900

文章目录 前言 1 概述 2 主要功能 3 状态LED指示灯 4 接口 5 使用Mission Planner进行配置 6 支持不同国家/地区 7 讨论论坛 前言 RFD900 无线电调制解调器是一款高功率 900Mhz ISM 波段无线电调制解调器,设计用于远距离串行通信。据报道,其通信…

数字孪生 三维建模方式以及细节步骤流程

对于数字孪生这个概念,三维建模不同行业认知都不尽相同。有的行业认为数字孪生重点在于建模,有的行业认为在于物联感知,还有部分认为是虚拟仿真。今天重点从建模角度和大家谈谈数字孪生技术常用的三维建模方式以及精细度分级。 数字孪生平台…

基于鲸鱼优化的knn分类特征选择算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 鲸鱼优化算法(WOA) 4.1.1 包围猎物 4.1.2 螺旋式搜索 4.1.3 更新策略 4.2 K近邻(KNN)分类器 4.3 基于WOA的KNN分类特征选择算法 5.完…

ApacheNginx配置ssl证书

一、Apache配置ssl Linux版本:CentOS Linux release 7.9.2009 (Core) Apache版本:Apache/2.4.6 (CentOS) 1、安装Apache(使用默认yum源) [root10-35-1-25 ~]# yum -y install httpd2、查Apache版本&启动Apache [root10-35-…

花瓣网美女图片爬取

爬虫基础案例01 花瓣网美女图片 网站url:https://huaban.com 图片爬取 import requests import json import os res requests.get(url "https://api.huaban.com/search/file?text%E7%BE%8E%E5%A5%B3&sortall&limit40&page1&positionsear…

spdk技术原理简介和实践经验

一、导读 与机械硬盘相比,NVMe-ssd在性能、功耗和密度上都有巨大的优势,并且随着固态存储介质的高速发展,其价格也在大幅下降,这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多&…

记一次某竞赛中的渗透测试(Windows Server 2003靶机漏洞)

靶机简介 Windows Server 2003是微软公司于2003年3月28日发布的服务器操作系统,它基于Windows XP/Windows NT 5.1进行开发,并在同年4月底上市。以下是关于Windows Server 2003的详细介绍: 系统名称与发布历程: 该产品最初被命名为…

设计模式——2_0 职责链(Chain of Responsibility)

楼下一个男人并得要死,那家隔壁的一家唱着留声机,对面是弄孩子。楼上有两人狂笑;还有打牌声,河中的船上有女人哭她死去的母亲。人类的悲欢并不相通,我只觉得他们吵闹 ——鲁迅 文章目录 定义图纸一个例子:如…

LEETCODE 170. 交易逆序对的总数

class Solution { public:int reversePairs(vector<int>& record) {if(record.size()<1)return 0;//归并 递归int left,right;left0;rightrecord.size()-1;int nummergeSort(left,right,record);return num;}int mergeSort(int left,int right, vector<int>…

C++:异常体系

异常体系 异常1.C语言传统的处理错误的方式2.C异常概念3.异常的使用3.1异常的抛出和捕获3.2 异常的重新抛出3.3异常安全3.4 异常规范 4.C标准库的异常体系5.异常的优缺点 异常 1.C语言传统的处理错误的方式 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以…

Android super.img解包和打包指南(含工具下载lpunpack、lpmake、lpdump)

本文所有命令均需要在linux 上执行 一、解包 1、将Android sparse image格式的super.img转成二进制文件 $ sudo apt install android-sdk-libsparse-utils $ simg2img super.img super.img.bin 2、下载工具lpunpack 和lpmake、lpdump 以及其依赖库 下载地址:https://downl…

python执行linux系统命令的三种方式

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 1. 使用os.system 无法获取命令执行后的返回信息 import osos.system(ls)2. 使用os.popen 能够获取命令执行后的返回信息 impor…

c++学习第十四讲---STL常用容器---vector容器

vector容器&#xff1a; 1.vector基本概念&#xff1a; vector功能与数组类似&#xff0c;与数组不同的是&#xff0c;vector可以动态扩展。 2.vector构造函数&#xff1a; vector<T> v; //默认构造函数&#xff0c;创建数据类型T的容器 ve…

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析

2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析 【赛程名称】高职组-云计算赛项第一场-私有云【任务 1】私有云服务搭建[10 分]【题目 2】Yum 源配置[0.5 分]【题目 3】配置无秘钥 ssh[0.5 分]【题目 4】基础安装[0.5 分]【题目 5】数据库安装与调优[0.5 分]【题目 …