Android的四大组件:ActivityServiceBroadcastReceiverContent Provider

Content Provider 属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据的途径,Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口

① Activity是Android应用中负责与用户交互的组件——大致上把它想象成Swing编程中的JFrame控件。不过它与JFrame的区别在于:JFrame本身可以设置布局管理器,不断地向JFrame中添加组件,但Activity只能通过setContentView(View)来显示指定组件

Activity为Android应用提供里可视化用户界面,如果该Android应用需要多个用户界面,那么这个Android应用将会包含多个Activity,多个Activity组成Activity。当前活动的Activity位于栈顶。

View组件是所有UI控件、容器控件的基类,View组件就是Android应用中用户实实在在看到的部分。但View组件需要放到容器组件中,或者使用Activity将它显示出来。如果需要通过某个Activity把指定View显示出来,调用Activity的setContentView()方法即可。

② Service与Activity的地位是并列的,它也代表一个单独的Android组件。Service与Activity的区别在于:Service通常位于后台运行它一般不需要与用户交互,因此Service组件没有图形用户界面。Service组件需要继承Service基类。一个Service组件被运行起来之后,它将拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态

③ BroadcastReceiver是Android应用中另一个重要的组件,BroadcastReceiver代表广播消息接收器。从代码实现角度来看,BroadcastReceiver非常类似于事件编程中的监听器。与普通事件监听器不同的是:普通事件监听器监听的事件源是程序中的对象;而BroadcastReceiver监听的事件源Android应用中的其他组件。使用BroadcastReceiver组件接收广播消息比较简单,开发者只要实现自己的BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。当其他组件通过sendBroadcast()、sendStickyBroadcst()或sendOrderedBroadcast()方法发送广播时,如该BroadcastReceiver也对该消息“感兴趣”(通过IntentFilter配置),BroadcastReceiver的onReceive(Context context,Intent intent)方法将会被触发。   开发者实现里自己的BroadcastReceiver之后,通常有两种方式来注册这个系统级的“事件监听器”。

-->在Java代码中通过Context.registReceiver()方法注册BroadcastReceiver。

-->在AndroidManifest.xml文件中使用<receiver……>元素完成注册。

④ ContentProvider 对于Android应用而言,组件必须相互独立,如果这些Android应用之间需要实现实时的数据交换。例如我们开发里一个发送短信的程序,当发送短信时需要从联系人管理应用中读取指定联系人的数据----这就需要多个应用程序之间进行实时的数据交换。

Android系统为这种跨应用的数据交换提供里一个标准,ContentProvider。当用户实现自己的ContentProvider时,需要实现如下抽象方法。

Insert(Uri, ContentValues):向ContentProvider插入数据。

Deleter(Uri,ContentValues):删除ContentProvdier中指定数据。

Update(Uri, ContentValues, String, String[] ):更新ContentProvider中指定数据。

Query(Uri, String[], String, String[], String):从ContentProvider查询数据。

通常与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResoler来访问数据。

Intent和IntentFilter  严格的说,Intent并不是Android的组件,但它对于Android应用的作用非常大----它是Android应用内不同组件之间通信的载体。当Android运行时需要连接不同的组件时,通常就需要借助于Intent来实现。Intent可以启动应用中另一个Activity,Service,BroadcastReceiver。

转载于:https://www.cnblogs.com/YangBinChina/p/3175297.html

Android的四大组件相关推荐

  1. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

  2. Android基础——四大组件之Activity

    这几天继续回顾了一些Android基础方面的知识,今天跟大家一起回顾下Android四大组件中的Activity.虽然很基础,但工欲善其事,必先利其器.我们只有打好夯实的基础,才能在技术开发这条道路上 ...

  3. Android深入四大组件(五)Android8.0 根Activity启动过程(后篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  4. Android 的四大组件

    目录 1.Activity 2.Service与intentService 3.LocalBroadcastManager的BroadcastReceiver 4.ContentProvider Ac ...

  5. Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti

    Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity.Service.BroadcastReceiver.ContentProvider.然后重点提到Activi ...

  6. Android 之 四大组件、六大布局、五大存储

    Android 之四大组件.六大布局.五大存储:https://blog.csdn.net/shenggaofei/article/details/52450668 Android 四大组件.五大存储 ...

  7. Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)

    相关文章 Android深入四大组件系列 Android系统启动系列 Android应用程序进程系列 Android深入解析AMS系列 前言 在几个月前我写了Android深入四大组件(一)应用程序启 ...

  8. Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)

    相关文章 Android深入四大组件系列 Android系统启动系列 Android应用程序进程系列 Android深入解析AMS系列 前言 在几个月前我写了Android深入四大组件(一)应用程序启 ...

  9. 【Android】四大组件之 ContentProvider

    前言 ContentProvider 是 Android 的四大组件之一,有时候我们需要操作其他应用程序的一些数据,就会用到 ContentProvider,ContentProvider 本质上是一 ...

最新文章

  1. js 提交form表单,js更改form表单的action属性
  2. 【PAT乙级】1029 旧键盘 (20 分)
  3. 从软件工程看,语言只是工具
  4. lucene学习笔记_学习Lucene
  5. 银行账务转账系统(事务处理)
  6. zap安装提示java_使用API调用进行ZAP身份验证
  7. 10 有关业务/事件类型WQ在年2021的号码范围不存在
  8. PLSQL DEVELOPER编辑器的自动替换文件
  9. 通过saltapi接口安装实例(modules)
  10. 李宏毅自然语言处理——ELMO/BERT/GPT简介
  11. 最新 IDEA 2022.1 版本即将发布,骚操作真不少...
  12. 开发中常用正则表达式
  13. html制作免费体验登录页面,Html制作简单而漂亮的登录页面
  14. nas文件服务器 迁移,换新机器啦,超简单NAS数据迁移方法
  15. Lucene(全文检索框架) 简单实例
  16. 注册表禁用计算机管理,Win7注册表编辑器被管理员禁用的解除方法
  17. DeepFlow: Deep Learning-Based Malware Detection by Mining Android Application for Abnormal Usage 2
  18. pd.DataFrame转换成list
  19. 前端——使用JavaScript(jQuery)通过身份证号获取籍贯、生日、年龄、性别
  20. 2020-12-02 微信JSAPIV3支付

热门文章

  1. FODMAP饮食(持续更新中)
  2. 复方丙酸氯倍他索软膏購買技巧
  3. Flink SQL Client注册JAVA UDF完整流程
  4. xfce4的主题PenOSmaster使用xfce4-screenshooter截屏会全屏幕都是紫色的问题-解决方案
  5. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书
  6. 按行拼接两个txt文件的python实现
  7. php从大到小排列数字,php输入几个数从大到小排序
  8. python socket tcp远控_Python3实现ICMP远控后门(中)之“嗅探”黑科技
  9. myBatis如何返回count(*)得到的int值
  10. Java并发与锁设计实现详述 - Java中的Condition