对于Android开发者来讲,Android中很多东西可能已经用的得心应手,可是有人问Android是什么的时候,突然有点蒙圈,不知该如何回答。如果在面试中遇到这种问题,求职者应该是滔滔不绝,面试官不喊停,求职者就能一直说下去。本文主要从消费者和开发者两方面初略阐述Android是什么。

消费者

对于普通消费者来讲,Android就是市场上安卓手机的操作系统,也就是非iPhone手机的操作系统。
Android系统手机品牌有很多,机型也很多,消费者基本上都能找到适合自己的手机。特别是一些大厂的手机都有自己的定制系统,消费者可以挑选自己喜欢的,而且Android手机软件生态也极其丰富,只有想不到,没有做不到。

早些年的时候,Android系统的手机都很便宜,市场上基本上没有需要卖肾才能买得起的手机。虽然便宜,但是手机操作起来的流畅性和ios相差很多,安装的软件一旦多一点就会有明显的卡顿;有的时候手机摄像头像素差不多,但是照片的质量和iPhone手机的照片有明显的差距;好多软件在用户没有授权的时候偷偷收集用户信息,窥探个人隐私;Android手机广告也是非常多的,好多东西门槛太低,乱七八糟的东西都有。

现在的Android旗舰级使用起来是相当的流畅,各种硬件也都有很大的升级,当然价格也是如此。如今的Android系统升级比较快,针对于以前的毛病都做了很好的优化,好多东西已经走在前面,但是由于定制化比较严重,导致一些应用在不同的手机上有明显的适配问题…。
讲着讲着就脱离了消费者的视角。

开发者

开发者可以从Android的发展历程,系统架构及应用组件来阐述Android是什么。

发展历程

安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机、平板电脑、电视、机车、穿戴、Chrome 操作系统设备等。Android操作系统最初由Andy Rubin开发,主要支持手机。截至到目前,Android系统市场份额第一,Android12预览版已经推出,Android 提供各种尖端工具和功能,可帮助超过25亿用户日常使用的手机、平板电脑、电视和汽车来构建应用。

2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。Android最初是为数码相机制造的,因为缺乏投资,后来改成智能手机领域。

2008年9月,谷歌正式发布了Android 1.0系统,同年10月第一部Android手机发布。
2009年4月,Android 1.5 Cupcake(纸杯蛋糕)发布。
2009年9月,Android 1.6 Donut(甜甜圈)发布。
2010年5月,Android 2.2 Froyo(冻酸奶)发布。
2010年12月,Android 2.3 Gingerbread (姜饼)发布。

2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。

2011年9月,谷歌将会发布全新的Android 4.0操作系统 Ice Cream Sandwich(冰激凌三明治)。
2013年11月1日,Android4.4KitKat(奇巧巧克力)正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情图案,UI的改进也更现代。这个版本才是Android应用开发的起点。

2014年6月26日,Android 5.0Lollipop(棒棒糖)发布。Android 5.0 系统使用一种新的Material Design设计风格。这套设计图对 Android 系统的桌面图标及部件的透明度进行的稍稍的调整,并且各种桌面小部件也可以重叠摆放,加入了透明度的改进。界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。采用这种设计的目的在于统一 Android 设备的外观和使用体验,不论是手机、平板还是多媒体播放器。之后发布的Android 5.1,Android 5.1新系统相对于Android5.0更加稳定了,同时支持多张SIM卡,加强了设备保护机制,增强了设备的WiFi能力。

2015年9月30日,Android 6.0Marshmallow(棉花糖)发布。Android 6.0整体设计风格依然保持扁平化的Material Design风格。Android6.0在对软件体验与运行性能上进行了大幅度的优化。据测试,Android6.0可使设备续航时间提升30%。

2016年8月22日,Android 7.0Nougat(牛轧糖)发布。Android 7.0 提供新功能以提升性能、生产效率和安全性。通过新的系统行为测试应用,以节省电量和内存。充分利用多窗口 UI、直接回复通知等功能。

2017年8月22日,Android 8.0 Oreo(奥利奥)发布。Android 8.0聚焦重点是电池续航能力、速度和安全,让用户更好地控制各种应用程序。具体体现在通知中心、.设置菜单、PinnedShortcuts、图标形状、后台限制。

2018年8月7日,Android 9.0 Pie(派)发布。从Android 9.0开始,谷歌统一推送升级。Android9.0深度集成了Project Treble模式,更加封闭;支持原生通话录音,提升了WiFi定位,加入了个性化自适应功能。Android 9.0改动体现在全面屏、全面通知栏、多摄像头、WIFI定位、神经网络、Material Design 2.0、Slice。

2019年9月3日,Android 10正式版发布正式发布,从该版本起,系统命名不再以实物命名,统一使用编号命名。Android 10主要有以下亮点:Foldables(折叠屏)、5G网络、通知中的智能回复、黑暗主题、手势导航、设置面板、分享快捷方式、用户隐私、相机和媒体、连接、ART优化、神经网络等。
2020年9月9日,Android 11发布。Android 11主要增强了聊天气泡,安全性和隐私性的保护,电源菜单,可以更好的支持瀑布屏,折叠屏,双屏和 Vulkan 扩展程序等。

2021年2月20日,Android 12推出首个开发者预览版。3月4日, Android 12 开发者预览版 1.1 版本公布。Android 12在沉浸模式下的手势导航,前台服务通知延迟,对 Netlink MAC 地址的限制,不受信任的触摸事件被屏蔽、应用无法关闭系统对话框,限制非 SDK 接口等方面有所改进。当然也有可能涉及到TV,具体详情等待正式发布。

系统架构

Android 系统架构包含以下组件:

  • 应用框架。应用框架最常被应用开发者使用。若作为硬件开发者,开发者 API需要非常了解,因为很多此类 API 都可以直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。

  • Binder IPC。Binder 进程间通信 (IPC) 机制允许应用框架跨越进程边界并调用 Android 系统服务代码,这使得高级框架 API 能与 Android 系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切似乎都在“按部就班地运行”。

  • 系统服务。系统服务是专注于特定功能的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。

  • 硬件抽象层 (HAL)。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,开发者可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。

  • Linux 内核。开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。Android 使用的 Linux 内核版本包含一些特殊的补充功能,例如低内存终止守护进程(一个内存管理系统,可更主动地保留内存)、唤醒锁定(一种 PowerManager 系统服务)、Binder IPC 驱动程序,以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。
    详细的解释说明还需开发中自行下功夫,这里点到为止。

应用组件

Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。

  • 活动
    Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,是Android 当中最基本的模块之一。Activity用户操作的可视化界面,为用户提供了一个完成操作指令的窗口,为用户提供交互的入口。阐述的时候可以从Activity数据通信和Activity生命周期开始,内容太多,这里就不解释了。

  • 服务
    Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service是一种程序,它可以运行很长时间,但是它却没有用户界面。开启Service有两种方式:
    1.started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
    2.bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

  • 广播接收器
    在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast将它们自己的Intent Broadcasts广播给其他应用程序。

  • 内容提供
    Content Provider 是Android提供的第三方应用数据的访问方案。
    (1)android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
    (2)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
    (3)ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
    (4)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
    (5)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。

对于普通面试,四大组件是一定会问的,引入自己熟悉的详细讲。

  • 文中内容大多来自于Android中文官网,百度百科,CSDN等。
  • 本文主要对问题提供思路,不针对具体细节进行解析,是否正确待定。

Android是个什么东西?相关推荐

  1. android app检测更新版本,《Android APP应该有的东西》之功能篇:版本检测更新

    <Android APP该有的东西>之功能篇:版本检测更新 自从友盟的自动更新下线之后,一大批app选择了自己写更新逻辑.是的,这里的逻辑并不复杂,完全可以自己写,但是不复杂不代表不麻烦, ...

  2. android 快速启动,《Android APP可以有的东西》之显示篇:快速启动App

    前言 又有好久木有更新啦,快成咸鱼了. 早上看到一篇关于app快速启动的公众号文章,觉得应该全面了解一下这个东西,所以这篇文章就小小地实践一下下记录下来,内容并不多,demo都没有必要上,大家直接看代 ...

  3. 学习Android开发只要这些东西,Android篇

    前阵子,我和阿里的薪酬福利专家M同学聊了一下午,M同学做了9年薪酬,和我们吐槽了很多薪酬方面的现象,也道出了少有人关注的薪酬逻辑和常识. 这一次,我又找了一位阿里技术岗位的招聘专家T同学,从他的视角中 ...

  4. android 历史搜索布局,《Android APP可能有的东西》之UI篇:流式标签搜索历史

    说在前面 很多APP都有热门排行热门搜索什么的,这个时候可能需要用到标签,也就是流式布局,而还有可能用到的就是搜索历史记录,这种一般都是使用listview展示.但是,相当有可能是反过来的UI展示效果 ...

  5. android点击展开textview,《Android APP可能有的东西》之UI篇:展开TextView全文

    前言 就像朋友圈里面那样的点击查看全文效果,很有可能是在项目中也会遇到.这里给出不实用自定义控件的方法,原理很简单,代码量也不大,可以直接复制粘贴到自己的项目...... 上效果图 我是图 看起来十分 ...

  6. android长按加入购物车,《Android APP可能有的东西》之UI篇:加入购物车动画

    很多电商app的加入购物车的动作会要求加上动画效果:飞进购物车,想来也合理,在listview界面时商品快速加入购物车,一直toast用户加入成功好像不太正常,所以添加一个动画,用户自然就懂了,而且也 ...

  7. Android Intent的几种用法全面总结

    Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...

  8. 调用android系统自带功能

    2019独角兽企业重金招聘Python工程师标准>>> Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial ...

  9. Android开发环境简单配置

    为什么80%的码农都做不了架构师?>>>    ·         Android开发环境简单配置 写这个系列的原因也是因为自己对android比较感兴趣,而网上多数教程都是直接参照 ...

最新文章

  1. 【RecyclerView】 十三、RecyclerView 数据更新 ( 移动数据 | 数据改变 )
  2. Firefox浏览器中,input输入框输入的内容在刷新网页后为何还在?
  3. 给mac配置adb 路径
  4. linux下查看用户个数和具体名字
  5. 使用R语言的spgwr包进行地理加权回归(GWR)
  6. SNS源码大集合--转载ITPUB
  7. 微信小程序框架主体快速开发教程
  8. vscode通过扩展插件实现流程图绘制
  9. 三维空间坐标的旋转算法详解_任意旋转角三维空间直角坐标转换的迭代算法
  10. 求最大公约数的4种常用算法
  11. 高中信息技术新课程标准
  12. 迁徙数据平台简单介绍
  13. layout-v21透明主题不生效的bug
  14. 计算机的玩法教程,第五人格电脑版怎么玩 电脑版玩法教程
  15. php pdf转txt文件,PDF文件在线转换TXT
  16. 关于partnerLinkType的相关实验
  17. Python读取 npy, npz, h5, pkl 文件
  18. c语言内存池中 二维数组,C语言内存池使用模型-2 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  19. 驱动学习笔记 IRP
  20. 网页设计经典案例(Web)

热门文章

  1. PXIEBPMCx4载板转接卡
  2. 三坐标检测基础知识之并非只有DCC方式才能进行零件坐标系的精找正
  3. 什么软件测试显示屏好,显示器测试软件
  4. 需求分析说明书、详细设计说明书、概要设计说明书样例
  5. _C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN3c105ErrorC1ENS_14SourceLocationERKSs
  6. 2013中秋大同三日游
  7. 飞信迷你首页疑似被黑?
  8. WASAPI 捕获指定设备的音频
  9. python基础课程设计项目_python基础课程设计《汽车销售管理系统》
  10. 2021年电气试验报名考试及电气试验考试报名