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

目录
相关文章
|
13天前
|
API Android开发
Android 监听Notification 被清除实例代码
Android 监听Notification 被清除实例代码
|
20天前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
28 2
|
1月前
|
JavaScript Java Android开发
kotlin安卓在Jetpack Compose 框架下跨组件通讯EventBus
**EventBus** 是一个Android事件总线库,简化组件间通信。要使用它,首先在Gradle中添加依赖`implementation 'org.greenrobot:eventbus:3.3.1'`。然后,可选地定义事件类如`MessageEvent`。在活动或Fragment的`onCreate`中注册订阅者,在`onDestroy`中反注册。通过`@Subscribe`注解方法处理事件,如`onMessageEvent`。发送事件使用`EventBus.getDefault().post()`。
|
1月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
14天前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
26 0
|
1月前
|
XML Android开发 数据格式
【Android UI】中间对齐UI组件
【Android UI】中间对齐UI组件
16 1
|
18天前
|
搜索推荐 Android开发 开发者
Android 自定义组件
Android 自定义组件
13 0
|
19天前
|
存储 程序员 定位技术
程序员必知:安卓的四大组件
程序员必知:安卓的四大组件
12 0
|
2月前
|
移动开发 监控 Android开发
构建高效Android应用:从内存优化到电池寿命代码之美:从功能实现到艺术创作
【5月更文挑战第28天】 在移动开发领域,特别是针对Android系统,性能优化始终是关键议题之一。本文深入探讨了如何通过细致的内存管理和电池使用策略,提升Android应用的运行效率和用户体验。文章不仅涵盖了现代Android设备上常见的内存泄漏问题,还提出了有效的解决方案,包括代码级优化和使用工具进行诊断。同时,文中也详细阐述了如何通过减少不必要的后台服务、合理管理设备唤醒锁以及优化网络调用等手段延长应用的电池续航时间。这些方法和技术旨在帮助开发者构建更加健壮、高效的Android应用程序。
|
25天前
|
存储 算法 Java
Android 进阶——代码插桩必知必会&ASM7字节码操作
Android 进阶——代码插桩必知必会&ASM7字节码操作
54 0