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系统的四大组件已经简要介绍完毕,看到这里的都是好孩纸!

目录
相关文章
|
16天前
|
Android开发 算法 架构师
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
|
4天前
|
移动开发 监控 Android开发
构建高效Android应用:从内存优化到电池寿命代码之美:从功能实现到艺术创作
【5月更文挑战第28天】 在移动开发领域,特别是针对Android系统,性能优化始终是关键议题之一。本文深入探讨了如何通过细致的内存管理和电池使用策略,提升Android应用的运行效率和用户体验。文章不仅涵盖了现代Android设备上常见的内存泄漏问题,还提出了有效的解决方案,包括代码级优化和使用工具进行诊断。同时,文中也详细阐述了如何通过减少不必要的后台服务、合理管理设备唤醒锁以及优化网络调用等手段延长应用的电池续航时间。这些方法和技术旨在帮助开发者构建更加健壮、高效的Android应用程序。
|
15天前
|
Java Android开发
82 PM撸代码之Android【绝顶高手排行榜】
82 PM撸代码之Android【绝顶高手排行榜】
6 0
|
15天前
|
达摩院 安全 Java
80 PM撸代码之Android【武侠讲封装、继承、多态】
80 PM撸代码之Android【武侠讲封装、继承、多态】
24 0
|
15天前
|
算法 Java BI
79 PM撸代码之Android【武侠篇:面向对象基础】
79 PM撸代码之Android【武侠篇:面向对象基础】
17 0
|
15天前
|
XML 编解码 算法
76 PM撸代码之Android【宏观篇】
76 PM撸代码之Android【宏观篇】
21 0
|
15天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
2天前
|
缓存 监控 Android开发
Android 开发中的内存优化策略
【5月更文挑战第30天】在移动应用的开发过程中,性能和用户体验始终是核心关注点。对于基于Android平台的应用程序,有效的内存管理是确保流畅运行和优异性能的关键因素之一。本文将深入探讨Android开发中常见的内存问题,并提出一系列实用的内存优化策略。我们将从内存泄漏的识别与防止开始,到合理使用内存缓存技巧,以及高效的数据结构选择等方面进行详细阐述。通过这些策略的实施,开发者可以显著减少应用的内存占用,提升应用的稳定性和响应速度,进而改善最终用户的体验。
|
2天前
|
搜索推荐 Android开发 开发者
安卓应用开发:打造高效通知管理系统
【5月更文挑战第30天】在移动应用的世界中,通知管理是提升用户体验的关键。本文将深入探讨如何在安卓平台上实现一个高效、用户友好的通知管理系统。我们将分析安卓通知渠道的优势,探索定制化通知的设计理念,并提供实用的编程技巧以优化通知的显示和用户交互。通过实例和代码片段,读者将学习如何有效地利用安卓系统服务来创建静默但强大的后台通知逻辑,从而在维持用户参与度的同时避免打扰用户。
|
3天前
|
编解码 测试技术 Android开发
安卓应用开发:打造高效用户界面的五大关键策略
【5月更文挑战第29天】 在竞争激烈的移动应用市场中,一个直观高效的用户界面(UI)对于吸引和保持用户至关重要。针对安卓平台,本文将探讨五种提升应用UI效率与用户满意度的关键策略。这些策略不仅基于最新的设计趋势,还结合了性能优化的实践技巧,旨在为开发者提供实用指南,帮助他们创建流畅、响应迅速且美观的应用体验。