当前位置: 首页 > news >正文

学习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

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

相关文章:

学习Android的第一天

目录 什么是 Android? Android 官网 Android 应用程序 Android 开发环境搭建 Android 平台架构 Android 应用程序组件 附件组件 Android 第一个程序 HelloWorld 什么是 Android? Android(发音为[ˈnˌdrɔɪd],非官方中文…...

回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测

回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测 目录 回归预测 | Matlab实现CPO-LSTM【24年新算法】冠豪猪优化长短期记忆神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-LSTM【24年新算…...

Typora导出html文件图片自动转换成base64

Typora导出html文件图片自动转换成base64 一、出现问题二、解决方案三、编码实现3.1.创建Java项目3.2.代码3.3.打包成Jar包 四、如何使用endl 一、出现问题 typora 导出 html 的时候必须带有原图片,不方便交流学习,文件太多显得冗余,只有将图…...

『C++成长记』string使用指南

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 📒2.1string类对象的常…...

硬件连通性测试:构建数字世界的无形基石

在当今数字化的时代,硬件设备的连通性对于系统的正常运行至关重要。硬件连通性测试作为确保设备协同工作的关键步骤,扮演着构建数字世界的无形基石的角色。本文将深入探讨硬件连通性测试的意义、方法以及在现代科技生态系统中的重要性。 1. 硬件连通性测…...

mysql的安装与卸载

mysql的安装 mysql 8.0的安装步骤: 1. 从mysql官网上下载mysql安装软件 https://www.mysql.com/ 2. 双击msi文件进行安装 3. 选择安装的类型 选择server only可以远程访问数据库 4. 选择服务并安装 5. 安装中,安装完成后直接next 6. 进入mysql的配置 …...

假期作业 2.2

第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是( B ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数…...

运维SRE-02 正则表达式、grep

1.特殊符号补充 1.1位置相关的特殊符号 . 当前目录 .. 当前目录的上级目录 ~ 当前用户家目录 / 根目录 cd - 返回上次所在目录1.2熟练掌握 # 注释符号,root命令提示符 | 管道符号.1.3了解其他特殊符号 $ 取值(取出变量的值),普通用户的提示符 ! % ^ & * (){} [] ; ? \…...

【SpringCloud】使用OpenFeign进行微服务化改造

目录 一、需求与背景二、OpenFeign 远程调用技术原理三、项目代码演示3.1 引入依赖3.2 实现OpenFeign注解修饰接口3.3 指定 OpenFeign 远程调用接口的扫描路径 四、OpenFeign 在日志中打印Request和Response五、OpenFeign 客户端超时配置六、使用 OpenFeign 实现服务降级6.1 实…...

DRV8313和L298N都是电机驱动,一个是驱动三相FOC无刷直流电机的,一个是驱动有刷电机,使stm32控制无刷电机简单入门知识

DRV8313和L298N都是电机驱动器,但它们之间存在一些关键的区别: DRV83131: 由德州仪器(TI)制造。 具有集成的场效应晶体管(FET)。 最大电压为65V。 峰值电流为3A。 适用于三相电机驱动。 L298N…...

React16源码: React中event事件系统初始化源码实现

event 事件系统初始化 1 )概述 react事件系统比较的复杂,它是基于dom的事件系统在dom事件系统上面进行了一个深度的封装它里面的很多实现逻辑都是自由的一套在初始化 react-dom 的源码的时候,会为react的事件系统注入 reactdom 相关的一些插…...

Qt6入门教程 15:QRadioButton

目录 一.简介 二.常用接口 三.实战演练 1.径向渐变 2.QSS贴图 3.开关效果 4.非互斥 一.简介 QRadioButton控件提供了一个带有文本标签的单选按钮。 QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项…...

Json序列化和反序列化 笔记

跟着施磊老师学C 下载&#xff1a;GitHub - nlohmann/json: JSON for Modern C 在single_include/nlohmann里头有一个json.hpp&#xff0c;把它放到我们的项目中就可以了 #include "json.hpp" using json nlohmann::json;#include <iostream> #include <…...

新媒体与传媒行业数据分析实践:从网络爬虫到文本挖掘的综合应用,以“中国文化“为主题

大家好&#xff0c;我是八块腹肌的小胖&#xff0c; 下面将围绕微博“中国文化”以数据分析、数据处理、建模及可视化等操作 目录 1、数据获取 2、数据处理 3、词频统计及词云展示 4、文本聚类分析 5、文本情感倾向性分析 6、情感倾向演化分析 7、总结 1、数据获取 本…...

Visual Studio使用Git忽略不想上传到远程仓库的文件

前言 作为一个.NET开发者而言&#xff0c;有着宇宙最强IDE&#xff1a;Visual Studio加持&#xff0c;让我们的开发效率得到了更好的提升。我们不需要担心环境变量的配置和其他代码管理工具&#xff0c;因为Visual Studio有着众多的拓展工具。废话不多说&#xff0c;直接进入正…...

Nginx简单阐述及安装配置

目录 一.什么是Nginx 二.Nginx优缺点 1.优点 2.缺点 三.正向代理与反向代理 1.正向代理 2.反向代理 四.安装配置 1.添加Nginx官方yum源 2.使用yum安装Nginx 3.配置防火墙 4.启动后效果 一.什么是Nginx Nginx&#xff08;“engine x”&#xff09;是一个高性能的HTTP…...

【遥感入门系列】遥感分类技术之遥感解译

遥感的最终成果之一就是从遥感图像上获取信息&#xff0c;遥感分类是获取信息的重要手段。同时遥感图像分类也是目前遥感技术中的热点研究方向&#xff0c;每年都有新的分类方法推出。 本小节主要内容&#xff1a; 遥感分类基本概念常见遥感分类方法 1 遥感分类概述 遥感图…...

解决:IDEA无法下载源码,Cannot download sources, sources not found for: xxxx

原因 Maven版本太高&#xff0c;遇到http协议的镜像网站会阻塞&#xff0c;要改为使用https协议的镜像网站 解决方案 1.打开设置 2. 拿到settings.xml路径 3. 将步骤2里箭头2的User settings file&#xff1a;settings.xml打开&#xff0c;作以下修改 保存即可。如果还不行…...

什么是IDE,新手改如何选择IDE?

IDE 是 Integrated Development Environment&#xff08;集成开发环境&#xff09;的缩写&#xff0c;它是一种软件应用程序&#xff0c;为程序员提供了一站式的开发环境&#xff0c;整合了多种工具和服务&#xff0c;以便高效地创建、修改、编译、调试和运行软件程序。IDE 集成…...

springBoot+Vue汽车销售源码

源码描述: 汽车销售管理系统源码基于spring boot以及Vue开发。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、 财务报表等功能&#xff0c;提供经理和销售两种角色进行管理。 技术架构&#xff1a; idea(推荐)、jdk1.8、mysql5.X(不能为8驱动不匹配)、ma…...

FPS游戏框架漫谈第五天

今天想了想整理下AnimatorManager 他的职责是负责动画的播放&#xff0c;那么在介绍该对象具备的对外接口&#xff0c;必须先介绍下拥有动画的对象他是怎么管理动画数据的&#xff0c;打个比方如果我们一个把武器需要播放开火动画&#xff0c;那么我们基于unity引擎可视化动画编…...

83.如何设计高可用系统

文章目录 一、简介二、导致系统不可用的常见原因三、高可用系统设计基本原则四、容错性设计五、弹性伸缩六、可观测七、安全防护设计八、自动化 一、简介 什么是高可用 高可用是指系统在面对各种故障和异常情况时&#xff0c;仍能够提供稳定、可靠的服务。对于企业和用户而言&…...

Map和Set讲解

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 集合框架 模型 Set 常见方法和说明 Set总结 Map说明 Map常见方法和说明 Map 中HashMap的 …...

PHP集成开发环境 PhpStorm 2023 for mac中文激活版

PhpStorm 2023 for Mac是一款功能强大的PHP集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在帮助开发者更高效地编写、调试和测试PHP代码。该软件针对Mac用户设计&#xff0c;提供了丰富的功能和工具&#xff0c;以简化开发过程并提高开发效率。 软件下载&#xff1a;…...

数学建模 - 线性规划入门:Gurobi + python

在工程管理、经济管理、科学研究、军事作战训练及日常生产生活等众多领域中&#xff0c;人们常常会遇到各种优化问题。例如&#xff0c;在生产经营中&#xff0c;我们总是希望制定最优的生产计划&#xff0c;充分利用已有的人力、物力资源&#xff0c;获得最大的经济效益&#…...

SpringBoot security 安全认证(二)——登录拦截器

本节内容&#xff1a;实现登录拦截器&#xff0c;除了登录接口之外所有接口访问都要携带Token&#xff0c;并且对Token合法性进行验证&#xff0c;实现登录状态的保持。 核心内容&#xff1a; 1、要实现登录拦截器&#xff0c;从Request请求中获取token&#xff0c;从缓存中获…...

详解WebRTC rtc::Thread实现

rtc::Thread介绍 rtc::Thread类不仅仅实现了线程这个执行器&#xff08;比如posix底层调用pthread相关接口创建线程&#xff0c;管理线程等&#xff09;&#xff0c;还包括消息队列&#xff08;message_queue)的实现&#xff0c;rtc::Thread启动后就作为一个永不停止的event l…...

阿赵UE学习笔记——13、贴花

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次介绍一种特殊的材质类型&#xff0c;贴花。 一、获取贴花资源 在没有分析贴花的原理之前&#xff0c;可以先去获得一些免费的贴花资源来使用&#xff0c;比如在Quixel上面就有专门的一个资源…...

简单说说mysql的日志

今天我们通过mysql日志了解mysqld的错误日志、慢查询日志、二进制日志&#xff0c;redolog, undolog等。揭示它们的作用和用途&#xff0c;让我们工作中更能驾驭mysql。 redo 日志 如果mysql事务提交后发生了宕机现象&#xff0c;那怎么保证数据的持久性与完整性&#xff1f;…...

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 202…...