学习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.mzph.cn/news/661781.shtml

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

相关文章

《云原生安全攻防》-- 云原生安全概述

从本节课程开始,我们将正式踏上云原生安全的学习之旅。在深入探讨云原生安全的相关概念之前,让我们先对云原生有一个全面的认识。 什么是云原生呢? 云原生(Cloud Native)是一个组合词,我们把它拆分为云和原生两个词来…

Arduino 推出基于乐鑫 ESP32-S3 的 STEM 教育机器人

Arduino Alvik 是 Arduino Education 推出的一款新型机器人,可作为一种跨学科工具,为当前教育和未来机器人世界筑起连接的桥梁。Hackster 的 Gareth Halfacree 表示:“Alvik 的设计灵感来自 Arduino 简化复杂技术的理念,同时它也 …

css实现按钮边框旋转

先上效果图 本质&#xff1a;一个矩形在两个矩形互相重叠遮盖形成的缝隙中旋转形成&#xff0c;注意css属性z-index层级关系 直接上代码 <div class"bg"><div class"button">按钮</div></div><style>.bg {width: 100%;heigh…

80.如何评估一台服务器能承受的最大TCP连接数

文章目录 一、一个服务端进程最多能支持多少条 TCP 连接&#xff1f;二、一台服务器最大最多能支持多少条 TCP 连接&#xff1f;三、总结 一个服务端进程最大能支持多少条 TCP 连接&#xff1f; 一台服务器最大能支持多少条 TCP 连接&#xff1f; 很多朋友可能第一反应就是端…

【pytorch】anaconda使用及安装pytorch

https://zhuanlan.zhihu.com/p/348120084 https://blog.csdn.net/weixin_44110563/article/details/123324304 介绍 Conda创建环境相当于创建一个虚拟的空间将这些包都装在这个位置&#xff0c;不需要了可以直接打包放入垃圾箱&#xff0c;同时也可以针对不同程序的运行环境选…

有趣的css - 动态的毛玻璃背景

页面效果 此效果主要使用 backdrop-filter 属性&#xff0c;以及配合 animation 属性来实现毛玻璃模糊和一些动效。 此效果可适用于登录窗口&#xff0c;网站背景或者一些卡片列表中&#xff0c;使网页更具科技感和空间感。 核心代码部分&#xff0c;简要说明了写法思路&#x…

【Docker】使用VS创建、运行、打包、部署.net core 6.0 webapi

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

应用智能家居领域中的低功耗蓝牙模块

智能家居&#xff08;smart home, home automation&#xff09;是以住宅为平台&#xff0c;利用综合布线技术、网络通信技术、 安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成&#xff0c;构建高效的住宅设施与家庭日程事务的管理系统&#xff0c;提升家居安…

MySQL for update锁表还是锁行校验

select * from user where id 1 for update ; 1. for update作用 在MySQL中&#xff0c;使用for update子句可以对查询结果集进行行级锁定&#xff0c;以便在事务中对这些行进行更新或者防止其他事务对这些行进行修改。 当使用for update时&#xff0c;锁定行的方式取决于wh…

AI 智能体:探索自主智能的世界

AI 智能体&#xff1a;探索自主智能的世界 认真的飞速小软 飞速创软 2024-01-30 11:06 发表于新加坡 想象一下&#xff0c;在这样一个世界里&#xff0c;软件自身可以自主地与环境交互&#xff0c;根据收集的数据做出决策&#xff0c;并以最少的人工干预来执行任务。这些AI智能…

2024美赛C题全网最早思路 网球运动(持续更新)

2024美赛已经于今天早上6点准时公布题目。本次美赛将全程跟大家一起战斗冲刺O奖&#xff01;思路持续更新。 2024 MCM Problem C: Momentum in Tennis &#xff08;网球运动的势头&#xff09; 注&#xff1a;在网球运动中&#xff0c;"势头"通常指的是比赛中因一系…

数据分析基础之《pandas(3)—DataFrame运算》

一、算术运算 1、add() 加法运算 2、sub() 减法运算 3、想要得到每天的涨跌幅大小&#xff0c;求出每天close-open价格差 # 算术运算 close data[close] open1 data[open] # 收盘价减去开盘价 data[m_price_change] close.sub(open1) data.head() 二、逻辑运算 1、逻辑…

2024 美国大学生数学建模竞赛 美赛(C题)网球比赛趋势问题 国际大学生数学建模竞赛| 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍希望大家都能轻松建模呀&#xff0c;华数杯也会持续给大家放送思路滴~ 抓紧小秘籍&#xff0c;我们出发吧~ 完整内容可以在文章末尾领取&#xff01; 问题1 • 开发一个模型&#xff0c;捕捉到比赛进行时点的流动&#xff0c;…

three.js CSS3DRenderer、CSS3DSprite渲染HTML标签

有空的老铁关注一下我的抖音&#xff1a; 效果: <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red;position: relative;"></div><…

python脚本扫描win系统中运行程序内存值并修改

用于修改运行中程序的内存值 #!encodingutf8import os import json import psutil import shutil import threading import ctypes import win32api import win32process from win32con import PROCESS_ALL_ACCESS class MemScan:注&#xff1a;一定要以系统管理员身份运行脚…

Kotlin 协程:用源码来理解 ‘viewModelScope‘

Kotlin 协程&#xff1a;用源码来理解 ‘viewModelScope’ Kotlin 协程是 Kotlin 语言的一大特色&#xff0c;它让异步编程变得更简单。在 Android 开发中&#xff0c;我们经常需要在后台线程执行耗时操作&#xff0c;例如网络请求或数据库查询&#xff0c;然后在主线程更新 UI…

微服务—RabbitMQ

目录 初识MQ 同步和异步通讯 同步通讯的优缺点 异步调用方案 异步通信优缺点 常见MQ技术对比 RabbitMQ快速入门 安装RabbitMQ RabbitMQ整体架构与相关概念 常见消息模型​编辑 入门案例 SpringAMQP 基本介绍 SpringAMQP案例——模拟HelloWorld消息模型 Sprin…

SpringCloud-搭建Eureka服务模块

在构建分布式微服务体系中&#xff0c;搭建Eureka服务模块是实现服务注册与发现的关键一步。Spring Cloud作为领先的微服务框架&#xff0c;通过Eureka为我们提供了高效的服务治理能力。本文将深入探讨如何使用Spring Cloud&#xff0c;逐步引导读者完成Eureka服务模块的搭建。…

【HarmonyOS】鸿蒙开发之ArkTs初步认识——第2.1章

ArkTs简介 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集。 以下图可以展示Js&#xff0c;TS&#xff0c;ArkTs的关系 ArkTs基础语…

C++(17)——list的模拟实现

前面的文章中&#xff0c;介绍了&#xff0c;的模拟实现&#xff0c;本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构&#xff1a; 2. list功能实现&#xff1a;尾部插入元素&#xff1a; 3. list迭代器的实现&#xff1a; 4. list功能实现&#xff1a;在任意位置前…