美文网首页Android 进阶之路
Android 进阶之路 2:四大组件 五大框架

Android 进阶之路 2:四大组件 五大框架

作者: 雪纳瑞的哈士奇 | 来源:发表于2018-06-24 13:35 被阅读131次

    四大组件

    1.Activity  

    一个activity 通常就是一个单独的页面

    activity 之间通过 intent 进行通信

    项目中每一个activity都必须要在 AndroidManifest.xml 文件中声明  否则系统将不识别也不知行该 activity

    我做项目的时候通常是 activity 和 fragment 同时使用

    fragment 可以是你能够将 activity 分离成多喝可重用的组件  每个都有他自己的生命周期和 UI    fragment 可以轻松的创建动态灵活的 UI 设计  可以适用不同的屏幕尺寸  从手机到平面电脑    fragment 是一个独立的模块   紧紧的与 activity 绑定在一起 可以运行中动态的移除  加入  交换等等    fragment 切换流畅  轻量切换    fragment 代替TabActivity做导航  性能更好  fragment 在4.2版本中新增嵌套 fragment 使用方法  能够生成更好的界面结果

    2:service

    service 用于后台完成操作  service 分为两种:  

    1.started(启动):当应用程序组件(如 activity)调用 startService()方法启动服务时   服务处于 started 状态  

    2.bound(绑定):当应用程序调用 bindService()方法绑定到服务时   服务处于 bound 状态

    startService()和 bindService()的区别:

    1.started service(启动服务) 是由其他组件调用 startService()方法启动的  这导致服务的 onStartCommand 方法被调用  当服务是 started状态时  其生命周期与启动他的组件无关  并且可以在后台无限期运行  记事启动服务器的组件已经被销毁   因此  服务需要在完成任务后调用 stopSelf()方法停止  或者由其他组件调用 stopService()方法停止

    2.使用 bindService()方法启动服务  调用者与被服务者绑定在了一起  调用者一旦退出  服务也就终止   但求同年同月同日生  也求同年同月同日死

    开发人员需要在应用程序的AndroidManifest.xml配置文件中生命全部的 service  使用<service></service>标签

    Service 通常位于后台运行  他一般不需要与用户交互  因此 service 组件没有图形界面  Service 组件需要集成 Service基类  Service 组件通常用于为其他组件提供后台服务或者监控其他组件的运行状态

    3.content provider

    android 平台提供了 Content Provider 使用一个应用程序的指定数据集提供给其他应用程序  其他应用也可以通过 ContentResolver 类从该内容提供者中获取或者存入数据

    只有需要多个应用程序之间共享数据的时候才是需要内容提供者   例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。

    ContentProvider 实现数据共享  ContentProvider用于保存和获取数据  并使用对所有的应用程序可见  这是不同应用程序之间共享数据的一种方式   因为 Android 没有提供所有应用程序之间共同访问的公共储存区

    开发人员不会直接使用ContentProvider的对象  大多是通过ContentResolver 对象实现对ContentProvider的操作

    ContentProvider使用 URI 来唯一标识其数据集  这里的 URI 以 content://作为前缀 标识该数据由ContentProvider来管理

    4.Broadcast Receiver

    你的应用可以使用他对外部时间进行过滤   只对感兴趣的外部事件(如打电话 或者数据网络可用时)  进行接受并且做出响应  广播接收器没有用户界面  跟他们可以启动一个 activity 或者 service 来响应她们接收到的信息  或者用 NotificationManager 来通知用户

    广播接收者的注册方法有两种  分别是动态注册和 AndroidManifest文件进行静态注册

    动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用

    五大框架

    Android应用开发框架是 Application Framework.其系统架构有5部分组成  分别是 linux kernel , Android Runtime , Libraries , Application Framework , Applications

    1.linux Kernel

    Android  继续 Linux 2.6提供核心系统服务  例如  安全  内存管理  进程管理 网络堆栈   驱动模型 .  Linux Kernel 也做未硬件和软件之间的抽象层  他隐藏具体硬件细节而为上层提供统一的服务  计算机网络里面有 osi/rm  分层的好处就是使用下层提供的服务而为上层提供同意的服务  屏幕本层与下层的差异  当本层及以下层发生了变化不会影响到上层  也就是说各层各尽其职  各层提供 SAP (Service Access Point)  专业点可以说是高内聚  低耦合  如果只进行应用开发   就没必要了解 linux Kernel 层

    2.Android Runtime

    Android 包含一个核心库的集合  提供大部分在 JAVA 编程语言核心类库中可用的功能  每一个 Android 应用程序是 Dalvik 虚拟中实例  运行在她们自己的进程中  Dalvik 虚拟机设计成  在一个设备可以高效的运行多个虚拟机  Dalvik 虚拟机文件的格式是.dex  dex 格式是专为Dalvik设计的一种压缩格式  适合内存和处理器速度有限的系统  大多数虚拟机包括 JVM 都是基于栈的  而Dalvik是继续寄存器的   两种架构各有优劣势 一般而言  基于栈的机器需要更多的指令   二基于寄存器的指令更大  dx 是一套工具  可以将java.class 转换成.dex 格式  一个 .dex 文件通常会有多个 .class  由于 dex 有时候必须进行最佳化  回事文件大小增加1-4倍  以 ODEX 结尾  Dalvik 虚拟机依赖于 linux 内核提供的基本功能 

    3、Libraries

    Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎

    4、Application Framework

    通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括: 视图(View)--丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 内容提供者(Content Providers)--使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)--提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器(Notification Manager)--使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)--管理应用程序生命周期,提供通用的导航回退功能

    5、Applications

    Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架构」,迭层主要分成三层:操作系统、中间件、应用程序。从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。

    相关文章

      网友评论

        本文标题:Android 进阶之路 2:四大组件 五大框架

        本文链接:https://www.haomeiwen.com/subject/ocwjyftx.html