android学习笔记3---android应用程序四大组件

组件(Component)是对数据和方法的简单封装。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。简而言之,组件就是对象。

android是基于组件的应用程序开发,在android的应用程序开发中,最重要的四种组件分别是Activity、Service、Content Provider、BroadCastReceiver。

1.Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。一个Activity相当于我们实际中的一个网页,当打开一个屏幕时,之前的那一个屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回到以前打开过的屏幕。activity的生命周期:即“产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启)。
 
Android api中所提供的Activity生命周期图:
Activity继承了ApplicationContext这个类。
当打开一个应用时,Android操作系统首先读取AndroidMainfest.xml文件,启动默认的Activity,生成默认的Activity对象,调用对象的Oncreate()方法,读取布局文件,根据布局文件,显示相关内容。
先后执行了onCreate()->onStart()->onResume三个方法。
当点击按BACK键时,应用程序结束,将先后调用onPause()->onStop()->onDestory()三个方法
当应用程序打开,按HOME键,然后去打开其他应用程序时,按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。当再次启动按HOME键之前的应用程序时,则先后执行了onRestart()->onStart()->onResume()三个方法。
具体的示例在http://kb.cnblogs.com/page/70125/文章中有详细的讲解。
 
Activity是整个应用程序的门面,主要负责与用户进行交互。

2.Service:Service是一种程序,它可以运行很长的时间,相当于后台的一个服务,服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口。通过context.startService(Intent service)可以启动一个Service,通过Context.bindService()可以绑定一个Service。 
 
其生命周期为context.startService() ->onCreate()- >onStart()->Service running-->context.stopService() | ->onDestroy() ->Service stop
如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。 stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。
调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy
 
通过Context.bindService()绑定一个Service的生命周期为:context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop
onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Service就会调用onUnbind->onDestroy相应退出。 
调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
一但销毁activity它就结束,如果按home把它放到后台,那他就不退出。。
 
Service负责后台的数据处理。
 
3.Content provider:内容提供者,可通过它来共享自己的数据给外部调用,给第三方应用提供数据访问的接口,是Android提供的第三方应用数据的访问方案。应用想对外提供的数据,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径。 

在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中。Content Provider 提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。

 Content provider负责对外提供数据,并允许有需要的应用程序访问这些数据。

4.BroadCast Recevicer:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。

BroadCast Recevicer可以让应用对一个外部的事件作出响应。通过NotificationManager来通知用户这些事情发生了,BroadcastReceiver注册的有两种方式,一种是可以在AndroidManifest.xml中注册,另一种可以在运行时的代码中使用Context.registerReceiver()进行注册。还可以通过Context.sendBroadcast()将他们自己的intent broadcasts广播给其他的应用程序。

BroadCast Recevicer是针对手机中出现的各种情况作出相对应的回应。

 

 

posted on 2013-05-24 14:37  liux_jiadukeji  阅读(369)  评论(0编辑  收藏  举报