Android学习巩固第一弹

四大核心组件

活动(activity),用于表现功能;
服务(service),后台运行服务,不提供界面呈现;
广播接受者(Broadcast Receive),用于接收广播;
内容提供者(Content Provider),支持多个应用中存储和读取数据。

Activity

Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。
一个Activity通常就是一个单独的屏幕(窗口)。
1.Activity之间通过Intent进行通信。
2.android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。

Service

service(服务)是安卓中的四大组件之一,它通常用作在后台处理耗时的逻辑,与Activity一样,它存在自己的生命周期,也需要在AndroidManifest.xml配置相关信息。
1.用startService()方法启动的服务,当宿主程序Activity对象退出时,Service并不销毁,也就是用用startService()方式启动的Service的生命周期并不和宿主Activity一致,如何退出Service,在Service中使用BroadcastReceiver广播接收者对象,然后通过Activity对象发出广播告诉service退出并销毁。
用startService()方法启动的Service只能通过Intent对象进行数据的传递,只能通过广播Brodcast间接地调用Service类中的方法
2.通过bindService方法启动是和startService()方法一样,都会调用onCreate()方法来创建Service,但它不会调用onStartCommand()方法而是调用onBind()返回客户端的一个IBinder接口,这个IBinder就是在Service的生命周期回调方法onBind()中的返回值,服务运行后,与前者不同的是,不是服务终止,而是使用Context.unbindService()方法之后,Service的生命周期回调onUnbind()会被调用,如果所有bind过Service的组件都调用unbindService()方法,那么Service会被停止,则会回调onDestroy()方法。
3.Service服务的方法介绍
StartService()方法:启动服务,在内存中生成服务的实例对象。
stopService()方法:停止服务,用来销毁内存中的Service实例对象,如果内存中的Service对象曾经被bindService()方法关联绑定过,那么要想销毁内存中的Service,要先使用unbindService()反绑定服务。
bindService()方法:具有创建服务和绑定服务(与服务进行通信)的能力,使得与Service对象取得连接,进而进行数据上的通信,想要通信就得在Service的onBind()方法返回给客户端一个IBind接口实例,IBind接口实例,IBind接口允许客户端调用服务的方法,比如得到Service运行的状态或执行其他业务方法的操作。
unbindService方法:断开与Service的通信。
使用bindService()方法启动服务的回调方法onRebind()的调用时机:是在客户端重新绑定Service时进行调用,需要注意的点是:有个限制就是反绑定Service时onUnbind()函数必须返回true.
ServiceConnection对象的onServiceDisconnected()方法调用时机:当Service服务被意外销毁时,例如内存的资源不足是这个方法才被自动调用。
onCreate()方法:当Service对象第一次被创建是,系统调用该方法。
onStartCommand(Intent intent,int flags,int startId)方法:当通过startService方法启动Service时,该方法被调用。
onDestroy()方法:当Service不在使用时,系统调用该方法。
方法onStartCommand的返回值:方法onStartCommand的返回值为int类型,主要作用是当Service进程被意外kill掉是,Service服务下一步要做哪些行为,主要有3种值。
START_STICKY: Service被意外终止时不调用onDestroy回调,并且终止后自动重启Service服务,只执行Service对象的onCreate()生命周期方法。
START_NOT_STICKY:Service被意外终止时不调用onDestroy回调,并且不自动重启Service服务
START_REDLIVER_INTENT:Service被意外终止时不调用onDestroy回调,并且终止后自动重启Service服务,还要执行Service对象的onCreate()和onStartCommand()生命周期方法,并且从Intent中能取到值。

Broadcast

在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用广播接收器来让应用对一个外部时间做出响应。
广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。

Content provider

  1. android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
  2. 只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
  3. ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
  4. 开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
  5. ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
    4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。AndroidManifest文件中未进行声明的activity、服务以及内容提供者将不为系统所见,从而也就不可用。而broadcast receiver广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统。需要注意的是在AndroidManifest文件中进行配置的广播接收者会随系统的启动而一直处于活跃状态,只要接收到感兴趣的广播就会触发(即使程序未运行)。

你可能感兴趣的:(周记)