88 PM撸代码之【Android四大基本组件】

简介: 88 PM撸代码之【Android四大基本组件】

今天分享一篇PM撸代码系列【Android四大基本组件】:


这一篇貌似重点回顾《大话西游》。。。大话西游是我最喜欢的电影之一,今天趁这个机会,多放几张照片^^...


通过之前PM撸代码系列的前8篇文章,相信大家已经打好了Java语言的基础了,现在,我们可以正式进入Android开发了。今天将介绍一下Android四大基本组件,文章采集、整理自书本和网络资料。

前方高能,请吸气进入!


【神奇的开发模式】

Android应用程序开发遵循MVC(Model-View-Controller)设计模式,因此Android开发可以分为两个部分进行:表现层逻辑控制层

表现层是Android应用程序的门面,也就是直接跟你接触的那部分。逻辑控制层则负责实现表现层各控件的功能,干的是幕后工作。

举个栗子,你就懂了,明星团队其实就像表现层和逻辑层的关系,明星肯定不是自己一个人干活的,明星本人就是表现层,Ta们负责光鲜亮丽的外表,但是幕后有很多人实现明星的功能,比如经纪人、水军、炒作团队、包养明星的老板。。。


【Android四大基本组件】


先将四大组件列举如下:

(1)Activity

(2)Service

(3)Broadcast Receiver

(4)Content Provider

这四大组件就是Android系统开发里,必不可少的基本组件了。看起来是不是很高大上,然后看不懂,然然后有点想十动然拒??不用怕,我会用我的方式讲给你听,增加你接受枯燥编程知识的概率!

通过类比,我发现其实这四大基本组件,很像去西天取了二十多年经的唐僧师徒。

(1)Activity像万事亲力亲为的孙悟空

(2)Service像凡是任劳任怨的沙和尚

(3)Broadcast Receiver像啰里啰嗦的唐僧,看似弱小,却威力超强(令无数人折腰的各种Android自启程序,基本就是Broadcast Receiver搞的鬼)

(4)Content Provider像似乎什么都不会,整天想着回高老庄和喊“大师兄,师傅被妖怪抓走了”的猪八戒(好长的定语,哥们,挺住!)

下面细说^^


【Activity孙悟空】


一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity就像孙悟空,遇到什么事都是他们往前冲,化缘、探路、打妖怪、请救兵……都是悟空一个干的。而Activity也是这样,基本和用户进行交互的都是Activity。

要注意一下两点:

(1)声明/注册:

应用程序中的每一个Activity,必须要在AndroidManifest.xml配置文件中注册后才能被识别和使用。(其实现在你用集成开发工具,都是自动注册的)

(2)多个Activity是通过Intent进行切换的:

一般在项目创建时,系统会自动生成一个Activity页面用以设计逻辑控制层。如果需要多个页面,则应在项目中添加第二个Activity页面,这里命名为SecondActivity。实现页面切换的步骤如下:

创建一个Intent对象: Intent intent=new Intent;

设置跳转页面为SecondActivity:intent.setClass(MainActivity.this, SecondActivity.class);

调用Activity的startActivity(intent)方法,即可切换到SecondActivity页面。


【Service沙师弟】


Service就很像西游记里的沙师弟,他任劳任怨,干的是脏活累活,一直在后台默默奉献。基本没有一个章节是主要讲沙师弟的。Service是不出现在应用程序表面的,它不跟用户进行直接交互。

(1)Service通常位于后台运行:

它一般不需要与用户交互,没有用户界面的程序。Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

(2)Service分为两种:

  • started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
  • bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。

而当服务是bound状态时,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止

(3)声明/注册:

开发人员需要在应用程序配置文件中声明全部的service,使用标签。


【Broadcast Receiver唐僧】


Only you!!!能伴我取西经。。。

上面的歌词是不是有点耳熟?好吧,这个唐僧就有点《大话西游》里的啰嗦的唐僧,看似弱小,其实威力很强,不小心就被感化了。。。Android中也有这样一个“啰嗦”的组件,就是Broadcast Receiver,它可以对外部事件进行监测,只对感兴趣的外部事件进行接收并做出响应。

就像啰嗦的唐僧一样,唐僧受到了特定的刺激(比如孙悟空把月光宝盒扔掉),唐僧就开始对孙悟空进行持续不断的爱国主义教育。而Broadcast Receiver受到了特定刺激,如当数据网络可用时,就会启动事先设置好的事件(如启动应用程序)。

(1)声明/注册

广播接收者的注册有两种方法,分别是:

程序动态注册:动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。

AndroidManifest文件中进行静态注册:静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。(这是应用自启的大招!!)

(2)响应

广播接收器没有用户界面,它可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。

通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

通过特定的设置,开发人员可以利用Broadcast Receiver使得程序自启,像唐僧说话一样,没完没了。。。


【Content Provider猪八戒】


猪八戒在唐僧西天取经的团队里,起着一个粘合剂的作用,虽然他平时好吃懒做,常常嚷嚷着要回高老庄,但是,在发生大事情(唐僧被妖怪抓走了),猪八戒往往起着一个消息传递者的身份,急急忙忙去找孙悟空,并告诉它“大师兄,师傅被妖怪抓走了”。

Content Provider在Android系统中,也起着粘合剂的作用。它使一个APP的数据能够被别的APP使用,如通讯录数据被多个应用程序使用。下面几个要点值得关注:

(1)其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。(开发人员不会直接使用ContentProvider类的对象)

(2)ContentProvider实现数据共享:ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。

好啦,Android系统的四大组件已经简要介绍完毕,看到这里的都是好孩纸!

目录
相关文章
|
1月前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
2月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
2月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
96 0
|
18天前
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
2月前
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
33 1
|
2月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
2月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
2月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
52 6
|
3月前
|
存储 开发框架 数据可视化
深入解析Android应用开发中的四大核心组件
本文将探讨Android开发中的四大核心组件——Activity、Service、BroadcastReceiver和ContentProvider。我们将深入了解每个组件的定义、作用、使用方法及它们之间的交互方式,以帮助开发者更好地理解和应用这些组件,提升Android应用开发的能力和效率。
278 5
|
3月前
|
存储 Java Android开发
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
在Android开发中,每位开发者都渴望应用响应迅速、体验流畅。然而,代码执行缓慢却是常见问题。本文将跟随一位大神的脚步,剖析三大典型案例:主线程阻塞导致卡顿、内存泄漏引发性能下降及不合理布局引起的渲染问题,并提供优化方案。通过学习这些技巧,你将能够显著提升应用性能,从新手蜕变为高手。
36 2