Android面试题整理(1)

Android基础知识点

1、四大组件是什么

Android 开发的四大组件分别是:
活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;
广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。

(1) 活动

Android中,activity是所有程序的根本,所有程序的流程都运行在activity之中,activity可以算是开发者遇到的最频繁,也是android当中最
基本的模块之一。在android的程序中,activity一般代表手机屏幕的一屏。一般一个android应用是由多个activity组成的,这多个activity之间
可以进行相互跳转。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。
可以选择性的一处一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。

(2) 服务

Service是android系统中的一种组件,跟activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service是
没有界面长生命周期的代码。Service是一种程序,可以运行很长时间的。Service可以在很多场合的应用中使用,如播放多媒体时用户启动了其他
Activity,这时程序要在后台继续播放,比如检测SD卡上文件的变化,或在后台记录地理信息位置的改变等,而服务却藏在后台。

开启Service有两种方式:
(1)Context.starService:Service会经历onCreat  ——>onStar(如果Service还没有运行,则Android先调用onCreat(),然后
调用onStar(),所以一个Service的onStar方能会重复调用多次);如果是调用者自己直接退出而没有调用StopService,服务会一直
在后台运行。该服务的调用者再启动起来后可以通过stopService关闭服务。注意,多次调用Context.starService()不会被嵌套
(即使会有相应的onStar()方法被调用),所以无论同一个服务被启动多少次,一旦调用Context.stopService()或者StopSelf(),
都会被停止。说明:传递给starService()的Intent对象会传递给onStar()方法。
调用顺序为onCreat——onStar(可调用多次)——onDestroy.

(2)Context.bindService():服务会经历onCreate()——onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端
回调服务的方法,比如得到服务运行的状态或其他操作。这个时候把调用者(Context,如Activity)会和服务绑定在一起,Context退出了,
服务就会调用onUnbind——onDestroy相应退出,所谓绑定在一起就是“共存亡”了。

(3) 广播接收器

在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用
广播接收器来让应用对一个外部时间做出响应。广播接收器不NotificationManager来通知用户这些事情发生了。
广播接收器既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceive()进行注册。只要是注册了,当
事件来临时,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast()将它们自己的Intent
广播给其他应用程序。

(4)内容提供者

内容提供者(Content Provider)是Android提供的第三方应用数据的访问方案。
在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。
Android当然不会真的把每一个应用都做成一座“孤岛”,它为所有应用都准备可一扇窗,这就是Content Provider。应用想对外提供的数据,
可以通过派生Content Provider类,封装成一枚Content Provider。每个Content Provider都用一个uri作为独立的标识,
形如:content://com.xxxxx。所有应用看着像REST的样子,但实际上它比REST更为灵活。和REST类似,uri也可以有两种类型,
一种是带id的;另一种是列表的,但实现者不需要按照这个模式来做,给id的uri也可以返回列表类型的数据。

猜你喜欢

转载自blog.csdn.net/u010725842/article/details/79606323