Android四大组件

仅供自己学习使用-转载请注明文中内容出自哪里(我已不知道哪里复制的)  

目录

一、活动(Activity)

1.概念

2.生命周期

3.Intent

4.Activity启动模式和任务栈

二、服务(Service)

1.概念

2.生命周期

3.启动方式

三、广播接收者(Broadcast Receive)

1.概念

2.注册方式

四、内容提供者(Content Provider)

1.概念

2.用途


   

  Android 系统的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。

一、活动(Activity)

1.概念

       Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。

2.生命周期

在这里插入图片描述

一个Activity的生命周期主要有四种状态:

  • a.运行中(Running/Active):这时Activity位于栈顶,是可见的,并且可以用户交互。
  • b.暂停(Paused):当Activity失去焦点,不能跟用户交互了,但依然可见,就处于暂停状态。当一个新的非全屏的Activity或者一个透明的Activity放置在栈顶,Activity就处于暂停状态;这个时候Activity的各种数据还被保持着;只有在系统内存在极低的状态下,系统才会自动的去销毁Activity。
  • c.停止(Stoped):当一个Activity被另一个Activity完全覆盖,或者点击HOME键退入了后台,这时候Activity处于停止状态。这里有些是跟暂停状态相似的:这个时候Activity的各种数据还被保持着;当系统的别的地方需要用到内容时,系统会自动的去销毁Activity。
  • d.销毁(Detroyed):当我们点击返回键或者系统在内存不够用的情况下就会把Activity从栈里移除销毁,被系统回收,这时候,Activity处于销毁状态。

3.Intent

  • 概念:Android组件之间通过Intent来进行传输数据,Intent 是一个消息传递对象,使用它可以向其他Android组件请求操作。
  • Intent的基本用途主要:启动 Activity、启动服务、传递广播。Intent分为显式Intent和隐式Intent。
  • Intent对象可以封装传递下面6种信息:

    1. 组件名称(ComponentName)
    2. 动作(Action)
    3. 种类(Category)
    4. 数据(Data)
    5. 附件信息(Extra)
    6. 标志(Flag
  • Extra

    这个参数不参与匹配activity,而仅作为额外数据传送到另一个activity中,接收的activity可以将其取出来。这些信息并不是激活这个activity所必须的。也就是说激活某个activity与否只上action、data、catagory有关,与extras无关。而extras用来传递附加信息,诸如用户名,用户密码什么的。

    可通过putXX()和getXX()方法存取信息;也可以通过创建Bundle对象,再通过putExtras()和getExtras()方法来存取。bundle对象传递数据,也是通过putXX()和getXX()等类似方法来传递数据。

4.Activity启动模式和任务栈

  • 每个Android应用都有一个任务栈,在栈顶的活动将会被执行。
  • 启动模式:通过在Mainfest.xml文件活动选项的android:launchMode属性来设置Activity的启动模式,各值对应模式如下:      1.standard模式:每次启动该活动时,都会在栈顶创建一个新的实例。      2.singTop模式:在启动活动时,如果栈顶活动是该活动的实例,则不再创建新的实例,而是复用该实例对象;反之,则创建一个新的实例。      3.singTask模式:在启动活动时,如果任务栈中存在该活动的实例,则将其置于栈顶;反之,则创建一个新的实例。      4.singInstance模式:这个模式是在整个Android系统中,只能启动或者存在一个活动对象。在启动该活动时,如果Android系统中没有该活动实例,则创建一个新的任务栈,再创建该活动的实例;反之,则复用已存在的实例对象。

二、服务(Service)

1.概念

      Service和Activity不一样,没有炫酷的界面。它是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。

2.生命周期

可以很清晰的看到,在通过 startService 方法启动 Service 的方式中,生命周期是 onCreate - onStartCommand - onDestroy,而通过 bindService 方法启动 Service 时,生命周期为 onCreate - onBind - onUnbind - onDestroy。接下来我们来了解一下这么方法的具体含义:

  • onCreate:第一次启动 Service 由系统调用。
  • onStartCommand:通过 startService 启动服务时由系统调用,它的调用位于 onCreate 之后。
  • onBind:绑定 Service 时调用,会返回一个 Binder 实例。
  • onUnbind:解绑 Service 时调用。
  • onDestroy:停止 Service 时调用,用于销毁 Service。

3.启动方式

  • startService只是启动Service,启动它的组件(如Activity)和Service并没有关联,只有当Service调用stopSelf或者其他组件调用stopService服务才会终止。
  • bindService方法启动Service,其他组件可以通过回调获取Service的代理对象和Service交互,而这两方也进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时才会销毁Service。                                                                                                                                                                                                                       bindService()工作过程:
  • step1:应用程序填写Intent,调用bindService()发出请求。                                   
  • step2:AMS收到请求,将从其内部找到系统所有服务组件中找到与Intent最匹配的一个,向它发送Service绑定请求 。                                    
  • step3:“被绑定”的服务进程响应绑定,执行操作,并在完成后通知AMS,回调发起请求的应用程序(回调接口是ServiceConnection)。

三、广播接收者(Broadcast Receive)

1.概念

      在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用广播接收器来让应用对一个外部时间做出响应。例如,当电话呼入这个外部事件到来时,可以利用广播接收器进行处理。当下载一个程序成功完成时,仍然可以利用广播接收器进行处理。广播接收器不NotificationManager来通知用户这些事情发生了。广播接收器既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceive()进行注册。

2.注册方式

      广播接收者的注册有两种方法,分别是程序动态注册(在运行时的代码中使用Context.registerReceive()进行注册)和AndroidManifest文件中进行静态注册。

  • 静态注册:直接在AndroidManifest文件中进行注册,生命周期和应用一致。
  • 动态注册:广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。

四、内容提供者(Content Provider)

1.概念

      内容提供者(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供者是Android实现跨程序共享数据的标准方式。

2.用途

待续

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值