2020-02-20

Android的初学与入门

在这里插入图片描述
发展历程:
从2009年5月开始,Android操作系统改用甜点来作为版本代号,这些版本按照从C大写字母开始的顺序来进行命名:纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(Éclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)﹑冰淇淋三明治(Ice Cream Sandwich)、果冻豆(Jelly Bean)、奇巧(KitKat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛轧糖(Nougat)、奥利奥(Oreo)、馅饼(Pie)。
此外,Android操作系统还有两个预发布的内部版本,它们分别是原子小金刚(Astro)和机器人班亭(Bender,电视动画《飞出个未来》角色)。
1.在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。
2.在2009年4月,谷歌正式推出了Android 1.5这款手机,从Android 1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,Android 1.5命名为Cupcake(纸杯蛋糕)。
3.在2010年,谷歌正式发布2.3操作系统。
4.在2011年,谷歌正式发布Android 4.0操作系统。
安卓和iOS的区别:
1、支持的设备不同,ios 系统主要用于iPhone,iPad, iPod, itouch, 安卓系统.支持的设备众多,包括小米、三星、oppo、vivo等 品牌生产的手机都采用安卓系统。

2、ios系统较为封闭,拥有完整的闭环生态,安卓系统更加开源,拥有开源计划和应用接口API。
层次结构:
1、android分为四层:
应用程序层(Applications)、应用程序框架层(Application Framework)、系统运行库层(Libraries和Android Runtime)和Linux内核层(Linux Kernel)。
2、应用程序层:
提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。
3、应用程序框架层:
该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。
活动管理器:管理应用程序生命周期并提供常用的导航回退功能。比如:开启应用程序需要的资源和退出应用程序时需要的释放资源。
窗口管理器:管理所有开启的窗口程序。
内容提供器:使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们的数据。
视图系统:可以用来构建应用程序,它包括列表list、网格grid、文本框text box、按钮button、图形绘制等,以及可嵌入的web浏览器
通知管理器:使应用程序可以再状态栏中显示自定义的提示信息。
包管理器:管理所有安装在Android系统中的应用程序。比如:信息查看和卸载程序等。
资源管理器:提供各种资源供应程序使用。比如:字符资源、图像资源、音频资源。
硬件服务:电话拨打和接听等相关功能、管理地图服务的相关功能、有关蓝牙服务的相关功能、WIFI服务相关功能、USB服务相关功能、传感器服务相关功能。
4、系统运行时库:
系统运行库层包括程序库和Android运行库两部分
程序库:Android包含一些C/C++库,这些库能被Android系统中的不同组件使用,它们通过应用程序框架为开发者提供服务,核心库的功能介绍:
Surface Manager:对显示子系统进行管理,并且为多个应用程序提供2D和3D图层的无缝融合。
Media Framework:基于PacketVideo OpenCORE,该库支持多种格式的音频和视频的回放和录制,同时支持静态图像文件。编码格式包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
SQLite:对于所有应用程序可用、功能强劲的轻型关系型数据库引擎
OpenglES支持OpenGL ES1.x和OpenGL ES 2.0该库可以使用硬件3D加速或者使用高度优化的3D软加速
FreeType:位图、矢量和字体显示
Webkit:最新的Web浏览器引擎,支持Android浏览器和一个可嵌入的Web服务器。
SSL:安全通信相关技术处理,为网络通信提供安全及数据完整性的一种安全协议。
Libe:Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Lib。它从BSD继承了标准的C系统函数库,是专门为基于嵌入式Linux设备定制的。
Android运行库:Android运行时库又分为核心库和Dalvik虚拟机两部分。核心库提供了Java语言核心库的大多数功能,这里主要通过JNI的方式向应用程序框架层提供调用底层程序库的接口。Dalvik虚拟机是为了能同时高效地运行多个VMs而实现的。
5.Linux内核层:
Android依赖于Linux2.6内核提供的核心系统服务,例如安全、内存管理、进程管理、网络栈、驱动模块等,Android对内核进行了增强。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。
主要领域:
车载、智能家居、支付系统、谷歌眼镜等

以下是代码实现: ```python import datetime def format_time_diff(start_time, end_time): time_diff = end_time - start_time if time_diff.days > 365: return end_time.strftime("%Y年%m月") elif time_diff.days > 30: return end_time.strftime("%Y年%m月%d日") elif time_diff.days > 0: return f"{time_diff.days}天前" elif time_diff.seconds > 3600: return f"{int(time_diff.seconds/3600)}小时前" elif time_diff.seconds > 60: return f"{int(time_diff.seconds/60)}分钟前" elif time_diff.seconds > 0: return f"{time_diff.seconds}秒前" else: return "未来时间" start_time = datetime.datetime(2018, 3, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 1, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 1, 9, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 8, 0, 0) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 29, 20) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 29, 50) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") start_time = datetime.datetime(2020, 2, 29, 9, 30, 40) end_time = datetime.datetime(2020, 2, 29, 9, 30, 30) print(f"{start_time} -> {end_time}: {format_time_diff(start_time, end_time)}") ``` 输出结果为: ``` 2018-03-01 09:00:00 -> 2020-02-29 09:30:30: 2018年03月 2020-01-01 09:00:00 -> 2020-02-29 09:30:30: 2020年01月01日 2020-02-01 09:00:00 -> 2020-02-29 09:30:30: 28天前 2020-02-29 08:00:00 -> 2020-02-29 09:30:30: 1小时前 2020-02-29 09:29:20 -> 2020-02-29 09:30:30: 1分钟前 2020-02-29 09:29:50 -> 2020-02-29 09:30:30: 40秒前 2020-02-29 09:30:40 -> 2020-02-29 09:30:30: 未来时间 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值