Android四大组件

1、四大组件

  Android开发四大组件分类是:活动(Activity):用于表现功能。服务(Service):后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(ContentProvider) :支持在多个应用中存储和读取数据,相当于数据库。

1.1活动

  Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity可以算是开发者遇到的最频繁,也是Android当中最基本的模块之一。在Android的程序当中,Activity一般代表手机屏幕的一屏。如果把手机比作为一个浏览器,那么活动就相当于一个网页。在活动当中可以添加一些按钮,复选框等控件。可以看到活动概念和网页的概念相当类似。一般一个Android应用是由多个Activity组成的。这个多活动之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity之间的跳转有可能返回值,例如,从Activity A跳转到Activity B,那么当Activity B运行结束的时候,有可能会给Activity A一个返回值。这样做在很多时候是相当方便的。

  当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的移除一些没有必要保留的屏幕,因为Android的会把每个应用的开始到当前的每个屏幕保存在堆栈中。

 

1.2服务 

 Service是android系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互.Service是没有界面的长生命周期的代码.Service是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,打开的Android浏览器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的服务进行控制。当然这个播放音乐的服务也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。服务可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他活动这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务嘛,总是藏在后头的。

开启服务有两种方式:

(1)Context.startService():Service会经历onCreate - > onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();

如果服务已经运行,则只调用调用onStart(),所以一个服务的调用onStart方法可能会重复调用多次;

            StopService的时候直接的的onDestroy,如果是调用者自己直接退出而没有调用StopService的话,服务会一直在后台运行。该服务的调用者再启动起来后可以通过stopService关闭服务。

  *注意:多次调用Context.startservice()不会嵌套(即使会有相应的调用onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf( ),他都会被停止。

  补充说明:传递给StartService(0的Intent对象会传递给onStart()方法。调用顺序为:onCreate - > onStart(可多次调用) - > onDestroy。

(2)Context.bindService():Service会经历onCreate() - > onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind - > onDestroyed相应退出,所谓绑定在一起就共存亡了。

 

1.3广播接收器

  在Android中,Broadcast是一种广泛运用的应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的广播进行接收并响应的一类组件。可以使用BroadcastReceiver来让应用程序对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver进行处理.BroadcastReceiver不能生成UI,也就是说对用户来说不是透明的,用户是看不到的.BroadcastReceiver通过NotificationManager来通知用户这些事情发生了.BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.se ndBroadcast()将它们自己的IntentBroadcasts广播给其他应用程序。

 

1.4内容提供

  Content Provider是Android提供的第三方应用数据的访问方案。

  在安卓中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库,文件等内容,都是不允许其他直接访问的.Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生ContentProvider类,封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有东西看着像REST的样子,但实际上,它比REST更为灵活。和REST类似,uri也可以有两种类型,一种是带编号的,另一种是列表的,但实现者不需要按照这个模式来做,给ID的URI也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值