android学习(android)的四大组

来源:互联网 发布:上海好的java培训机构 编辑:程序博客网 时间:2024/05/01 09:49

android的四大组件 

最近在学android,感觉学的东西很容易忘记,而且有些东西不太容易消化,写下来的话能让自己理解的更深,而且方便以后回顾............

android最近几年比较流行,所以学的人越来越多,在IT行业,你要时时刻刻保持学习的状态,不然就很容易被后人赶上,打大学里面什么都没学到.所以现在学这个感觉还是比较吃劲的,真的是一入IT深似海.

android的四大组件是学习android的入门,所以大家都是比较清楚。android的四大组件包括(1.activity 2.service 3.broadcast receivers 4.content providers)

1、activty

在android系统中我们接触的最多的一个组件就是activity,在android官网的API中是这么介绍activity的:
一个activity是一个应用程序组件,它提供了一个屏幕,用户可以交互为了做一些事情,比如拨电话,拍照,发送电子邮件,或查看地图。每个activity都将吸引它的用户界面的一个口。
窗户通常充满屏幕,但可能比屏幕小,浮在其他窗口的顶部。应用程序通常由多个activity松散。通常情况下,一个activity在一个应用程序被指定为“主要”activity,这是显示给用户启动应用程序时第一次。每个activity可以开始另一个activity来执行不同的操作。每次新activity开始,前面的activity停止,但是系统堆栈保存activity(“堆栈”)。

当一个新activity开始时,它被压入栈和用户的焦点。回堆栈遵守基本的“后进先出”堆栈机制,所以,当用户完成与当前activity和按后退按钮,它从栈中弹出(破坏)和前面的activity简历。(回堆栈是讨论更多的任务和堆栈文档。)

当一个activity停止,因为一个新activity开始,这是通知的变化状态通过activity的生命周期回调方法。有一些activity可能会收到的回调方法,由于它的变化是否系统创建它,阻止它,恢复它,或者破坏——每个回调提供你机会来执行特定的工作,适当的状态改变。例如,当停止,你的activity应该释放任何大型对象,如网络或数据库连接。当activity简历,您可以重新获取必要的资源和中断的恢复操作。这些状态转换都是activity生命周期的一部分。

对我们程序员来说我们打交道最多的组件也是activity,有很多东西我们都是在要activity中来完成的,比如1.view(我们改显示一个怎么样的页面给用户看) 2intent(每个activity是怎么来穿数据的) 等等....其实我个人感觉android的其他三大组件都是要建立在activity上的。

2、service

如果说activity是我们在android系统中我们接触的最多的一个组件,那么service却恰恰相反,在android官网的API中是这么介绍service的:
service在android系统中我们是看不到,它在后台执行长时间运行的操作,不提供用户界面。另一个应用程序组件可以启动一个service,它将继续在后台运行,即使用户切换到另一个应用程序。此外,一个组件可以绑定到一个service与它交互,甚至执行进程间通信(IPC)。例如,一个service可能处理网络交易,播放音乐,执行文件I / O,或与一个内容提供者交互,所有的背景。
一个service基本上可以采取两种形式:
开始
service是“开始”,当一个应用程序组件(例如,一个活动)开始通过callingstartService()。一旦开始,一个service可以无限期地在后台运行,即使开始它的组件被摧毁。通常,开始service执行一个操作,不向调用者返回一个结果。例如,它可能通过网络下载或上传文件。当操作完成,service应该停止本身。绑定service是“绑定”当一个应用程序组件绑定到它通过用bindService()。绑定service提供了一个客户机-service器接口,允许组件与service交互,发送请求,得到结果,甚至跨进程与进程间通信(IPC)。
绑定
service只要运行另一个应用程序组件绑定到它。多个组件可以绑定到service,但是当他们解开,service被摧毁。
尽管这些文档一般分别讨论了这两种类型的service,您的service可以工作两个方面,它可以开始无限期(运行),也允许绑定。这是简单的你是否实现两个回调方法:onStartCommand()允许组件开始,onBind()允许绑定。

无论您的应用程序启动时,绑定,或者两者兼有,任何应用程序组件可以使用service(甚至从一个单独的应用程序),以同样的方式,任何组件都可以使用一个活动开始anIntent。然而,您可以声明与私人service,在清单文件,阻止访问其他应用程序。这一节讨论更多的是关于声明的service清单。

警告:一个service运行在主线程的托管进程(service不创建自己的线程和不运行在一个单独的进程(除非您指定)。这意味着,如果您的service将做任何CPU密集型工作或阻塞操作(如MP3播放或网络),您应该创建一个新线程内的service工作。通过使用一个单独的线程,您将减少风险的应用程序没有响应”(ANR)错误和应用程序的主线程可以仍然致力于用户交互活动。

3、broadcast receivers

activity、service、broadcast receivers都通过消息被激活,我们可以统称为意图。意图组件之间的消息传递是后期运行时绑定的设备在相同或不同的应用程序中。目的本身,一个意图对象,是一个被动持有一个抽象数据结构描述操作的执行——或者经常在广播的情况下,描述一些已经发生的和正在宣布的事情。有单独的交付机制意图每种类型的组件。在android官网的API中是这么介绍broadcast receivers的:

广播接收器是一个组件,响应系统广播公告。许多广播由系统的例子中,一个广播宣布屏幕已关闭,电池低,或者照片被捕获。应用程序也可以初始化广播——比如,让其他应用程序知道一些数据已经被下载到设备上,可以被使用。虽然广播接收器不显示一个用户界面,他们可能会创建一个状态栏通知提醒用户当广播事件发生时。更常见的,一个广播接收器只是一个“网关”其他组件和旨在做最少的工作。例如,它可以启动一个服务来执行基于事件的一些工作。广播接收器被实现为一个子类BroadcastReceiver和每个广播作为一个意图对象

在每种情况下,Android系统找到适当的活动,服务,或一组广播接收器响应的目的,必要时实例化它们。没有重叠在这些消息传递系统:广播意图传递广播接收器,不活动或服务。一个意图传递给startActivity()是一个活动,从不到服务或广播接收器,等等。

4、content providers

content providers是一个比较特殊的组件,之前的三大组件他们之间传数据只能在一个进程/应用程序里面相互传递数据,但是content providers可以实现不同的进程之间的数据交互。在android官网的API中是这么介绍content providers的:

内容提供商管理进入一个结构化的数据集。它们封装了数据,并提供定义数据安全机制。内容提供者的标准接口连接数据在一个进程代码运行在另一个进程。
当你想要访问数据在一个内容提供者,您使用ContentResolver对象在应用程序的上下文中作为客户与供应商沟通。TheContentResolver对象与提供者通信对象,一个implementsContentProvider类的一个实例。提供程序对象从客户端接收数据请求,执行所请求的操作,并返回结果。
你不需要开发自己的供应商,如果你不打算与其他应用程序共享数据。然而,你需要你自己的供应商在自己的应用程序提供自定义的搜索建议。你也需要自己的供应商,如果你想拷贝和粘贴复杂的数据或文件从您的应用程序到其他应用程序。
安卓系统本身包括内容提供商管理数据,如音频、视频、图像和个人联系信息。你可以看到其中的一些参考文档中列出theandroid.provider包。有一些限制,这些提供者都可以访问任何Android应用程序。


0 0
原创粉丝点击