1.Android开发指南—应用程序组件

Android应用程序没有为应用准备一个单独的程序入口,而是为系统依照需求实例化提供了基本的组件,共有四种组件类型:

 Activity  Service  BroadcastReceiver  ContentProvider

Activity:是为用户操作而展示的可视化用户界面。比如一个activity可以展示一个菜单列表供用户选择,或者显示一些包含说明的图片。一个应用程序

            可以有一个activity也可以有多个。每个activity都被给予一个默认的窗口以进行绘制。窗口显示的可视内容第由一系列视图构成的,这些视图

            均继承自View基类。可以使用Activity.setContentView()方法将视图加入activity的窗口之中。

Service:服务没有可视化的应用界面,而是在一段时间内在后台运行。比如一个服务可以在用户做其他事情的时候在后台播放背景音乐、从网络上获取一些

             数据或者计算一些东西并提供给需要这个运算结果activity使用。每个服务都继承自Service基类。

          一个音乐播放器:播放器应用程序可能有一个或多个activity来给用户选择歌曲并进行播放,音乐播放器这个任务本身不应该为任何activity所处理,因为用户

                                 希望离开播放器做其他事情的时候,音乐仍在继续播放。为了达到这个目的,播放器activity应用启用一个运行与后台的服务。

            我们也可以绑定一个服务,绑定之后,我们可以通过那个服务暴露出来的接口与服务进行通讯。

广播接收器:是一个专注于接收广播通知信息,并提出对应处理的组件。应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应。所有的接

                 收器均继承自BroadcastReceiver基类。广播接收器没有用户界面,然而它们可以启动一个activity来响应它们收到的信息或者NotificationManager

                 来通知用户。

内容提供者:将一些特定的应用程序数据供给其他应用程序使用。数据可以存储于系统文件,SQLite数据库或其他方式。内容提供者继承于ContentProvider基类,为

                 其他应用程序取用和存储它管理的数据实现了一套标准方法。然而应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,调用它的方法

                 作为替代。

 

激活组件:当接收到ContentResolver发出的请求后,内容提供者被激活。Activity、Service、BroadcastReceiver被一个叫intent的异步消息所激活。对于每个组

              件来说,激活的方法是不同的:

 1)对于Activity ,通过传递一个Intent对象至Context.startActivity()或Activity.startActivityForResult()以载入一个activity,当然相应的activity可以通过调用

                      getIntent()方法来查看激活它的intent。一个activity经常启动下一个activity,如果它希望它所敌情的那个activity返回一个结果,它会以调用

                      startActivityForResult()来取代startActivity()。

 2)对于service,通过传递一个Intent对象至Context.startService()将启动一个服务。Android调用服务的onStart()方法并将Intent对象传递给它。与此类推

                        一个Intent可以被调用组件传递给Context.bindService()以获取一个正在运行的目标服务的连接,这个服务会由onBind()方法的调用获取这个

                      Intent对象。

 3)对于BroadcastReceiver,通过传递一个intent对象给Context.sendBroadcast()、Context.sendOrderedBroadcast()、以及

                     Context.sendStickyBroadcast()和其他类似方法来产生一个广播。

 

关闭组件:内容提供者仅在响应ContentResolver提出请求的时候激活。而一个广播接收器仅在响应广播信息的时候激活,所以没有必要去显示的关闭这些组件;

             而activity和service不同,activity提供了用户界面并与用户进行会话,所以只要会话依然持续,哪怕对话过程暂时停顿,它都会一直保持激活状态,而

            服务也会很长一段时间内保持运行,所以Android为这两个提供了关闭的方法。1)对于activity,通过调用finish关闭;一个activity可以通过调用另外一个

           activity的finishActivity()来关闭它。2)对于service,可以通过调用stopSelf()或Context.stopService()来停止。

 

mainfest文件:当Android启动一个一个用程序前,它必须知道哪个组件是存在的,所以应用程序会在一个mainfest文件中声明它的组件,这个文件会被打包到

                    Android中,这个.apk文件还将包括应用程序的代码、文件以及其他资源。

   Activity组件的声明:<activity>    服务组件的声明:<service>   广播接收器声明:<receiver>   内容提供者的声明:<provider>

   其中对于广播接收器即可以在mainfest文件中声明也可以在代码中进行动态的创建,并以调用Conmtext.registerReceiver()的方式注册系统。

    

posted on 2012-05-14 11:11  ssy黑桃a  阅读(194)  评论(0编辑  收藏  举报