我是一个开发者,对于理论知识却不是很在意,没办法,生下来就是理科生的料,不喜欢背一些东西,但是有时候还真的去了解一下,因为找工作的经过面试那一关,要不跟面试官说,你理论不好,面试题不能回答,但是进了公司会好好工作,并且能把事情做好,HR会相信你说的话吗?我是一个有着一年多开发经验的人了,项目也上线几个了,但是对于面试题,还是云里雾里的,现在就来缕一缕面试题吧,首先从四大主件开始,面试官要是问四大主件是什么,你知回答:1,activity,2,服务3,广播接收者4,内容观察者,未免太过简单了,在网上也看了好多资料,说一说我对这四大主件的理解吧,这是最基础的东西,就随便聊聊了,有说错的地方,还望大师给评论里面说一下,我可不想让在面试的时候让HR或者项目经理跟我说呀,哈哈。
废话说了一大堆,现在就开始吧!
1:activity(活动)
活动是最基本的 Android 应用程序组件,在应用程序中,一个活动通常就是一个单独的用户界面。每一个
活动都被实现为一个独立的类,并且从活动(Activity)基类中继承而来,活动类将会显示由视图(View)控 件组成的用户接口,并对事件(Event)做出响应。大多数的应用程序都会有多个用户界面,因此便会有多个相 应的活动。
Android 的一个活动一般对应界面中的一个屏幕显示,可以理解成一个界面,每一个活动在界面上可以包 含按钮、文本框等多种可视的 UI 元素。
activity生命周期:
生命周期的几个方法就不说了,都知道,下面简单的说一下我的理解;
在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。
Activity有四种本质区别的状态:
- 在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
- 如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。一个暂停状态的Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被杀掉。
- 如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被杀掉。
- 如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
2:service(服务)
一个服务是一个具有一段较长生命周期但没有用户界面的程序。例如:一个正在从播放列表中播放歌曲的
媒体播放器在后台运行。(服务也有生命周期,可以理解为他是activity的隐形版,因为activity是界面与用户的接触,而服务是没有界面的,他是接收界面的指令来处理一些事情,就跟web的ajax差不多,点击按钮,看着没变化,其实后面已经做了很多事情,service是用户看不到的,要想更详细的理解,你还是去看看api把,我是初中毕业,api看不懂)
3:内容提供者(Content Provider)
应用程序能够将它们的数据保存到文件或 SQLite 数据库中,甚至是任何有效的设备中。当需要将数据与其 他的应用共享时,内容提供者将会很有用。一个内容提供者类实现了一组标准的方法,从而能够让其他应用程序 保存或读取此内容提供者处理的各种数据类型。
4:广播接收器(BroadcastReceiver)
这个东西大家并不陌生,很多时候都用得到,广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、数据网络可用通知或者到了晚上时进行通知。
广播接收器的生命周期
广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android 将调用这个方法,并 传递给包含在这个消息中的 Intent 对象。
广播接收器只有在这个方法的执行过程中才处于活动状态,当 onReceive()返回后,广播接收器将不再处于 活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。
刚播我不知道怎么去理解他,他就像是一个忠诚的哨兵,或者你的跟班,因为他是一直出去待命状态,只要有指令,立马帮你做事,而且,他在待命状态的时候,不消耗内存。
(以上内容是我对四大主件的理解,可能有叙述不恰当的地方,或许有弄不灵清的,你可以再去差其他的有关资料,我自己明白就行了)