导航菜单
首页 >  android期末考试试题  > android复习题库 android期末考试试题

android复习题库 android期末考试试题

1.Activity类中定义了7个回调方法,分别是什么?

我的答案:

onCreate()这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。onStart()这个方法在活动由不可见变为可见的时候调用。onResume()这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。onPause()这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。onStop()第一行代码——Android58这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()方法并不会执行。onDestroy()这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。onRestart()这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。以上七个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。2.简述Activity的3种生存期。

我的答案:

完整生存期活动在 onCreate()方法和 onDestroy()方法之间所经历的,就是完整生存期。一般情况下,一个活动会在 onCreate()方法中完成各种初始化操作,而在 onDestroy()方法中完成释放内存的操作。可见生存期活动在 onStart()方法和 onStop()方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在 onStart()方法中对资源进行加载,而在 onStop()方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。前台生存期活动在 onResume()方法和 onPause()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也这个状态下的活动。3.活动在生命周期中最多中能有几种状态?

我的答案: 一个活动在其存在,也就是生命周期中一共存在四种状态: 1.运行:位于栈顶,系统最不愿意回收的活动。 2.暂停:不是栈顶的位置,但是在界面依旧可见,并不是每一个活动都占满整个屏幕,当系统内存比较低的时候会回收。 3.停止:不是栈顶的位置,完全不可见,仍然会存一些成员变量的内容,当其他 地方需要内存的时候会回收。 4.销毁:从返回栈中移除之后,系统最喜欢的就是回收这种活动。

4.Android应用程序的四大核心组件分别是什么?

我的答案: activity,service,content provider,broadcast receiver

5.分别总结出显式Intent与隐式Intent的使用方法?

我的答案: 创建隐式Intent的主要的方法: 1.初始带Action:Intent(String action) 2.空的Intent: Intent(); 3.初始同时带Action和Uri: Intent(String action, Uri uri); 创建显式Intent的主要的方法: 1.创建方法。Intent intent = newIntent(Context context,Class class); 2.创建方法。Intent intent = newIntent(Context context,Class class);

6.Intent传递数据有两种方法?

我的答案: 一:使用putExtra() (1)开始传递:FirstActivity.java (2)接收数据:SecondActivity.java (3)传递结果: 二:使用bundle传递数据 (1)开始传递:FirstActivity.java (2)接收数据:SecondActivity.java (3)结果显示:

7.简述Serializable传递对象的步骤。

我的答案: 实现序列化(保存到一个文件)的步骤 1.Make a FileOutputStream FileOutputStream fs = new FileOutputStream(“foo.ser”); 2.Make a ObjectOutputStream ObjectOutputStream os = new ObjectOutputStream(fs); 39write the object os.writeObject(myObject1); 4.close the ObjectOutputStream os.close();

8.简述活动的四种启动模式。

我的答案: 活动(activity)的四种启动模式 1.standard模式 它是活动默认的启动模式,在不进行显示制定的情况下,所有活动都会自动使用这种启动模式。每次通过此模式来启动activity时,android总会为目标activity启动一个新的实例。 2.singleTop模式 它和standard模式有点类似,但是又一点是不同的:此模式下当将要被启动的activity已经位于Task栈顶时,系统不会重新创建目标activity实例,而是复用已有的activity实例。 如果将要被启动的activity没有位于Task栈顶时,此时系统会重新创建目标activity的实例,并将它加载到Task栈顶上。 3.singleTask模式 使用这种加载模式的activity在同一个Task内只有一个实例,当系统采用此singleTask模式启动activity时,可以分为三种情况: 如果将要启动的activity不存在,系统将会创建目标activity实例,并将它加入到Task栈顶。 如果将要启动的activity已经位于Task栈顶,此时与singleTop模式的行为相同。 如果将要启动的activity已经存在,但没有位于Task栈顶,系统将会把位于该activity上面的所有activity移出Task栈,从而使得目标activity转入栈顶。 4.singleInstance模式 此加载模式下,无论从哪个Task中启动目标activity,只会创建一个目标activity实例,并会使用一个全新的Task栈来装载该activity实例。当系统采用singleInstance模式启动activity时,可以分为两种情况: 如果将要启动的activity不存在,系统会先创建一个全新的Task、再创建目标activity的实例,并将它加入新的Task的栈顶。 如果将要启动的activity已经存在,无论它位于哪个应用程序中,无论它位于哪个Task中,系统将会把该activity所在的Task转到前台,从而使用该activity显示出来。 tips:需要指出的是,采用singleInstance模式加载activity总是位于Task栈顶,采用singleInstance模式加载activity所在Task只包含该activity。

9.什么是程序、进程、线程?

我的答案: 程序(program)是实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行的操作的一系列语句和指令。一般分为系统程序和应用程序量大类。计算机中的程序在港澳台地区称为程式。程序就是为使用电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令集合。 进程(有时被称为重量级进程)是程序的一次执行任务。每一个进程都有自己的地址空间、内存、数据栈以及其它记录器运行轨迹的辅助数据。操作系统管理子其运行的所有进程,并为这些进程公平地分配时间。 不过各个进程都有自己的内存空间,数据栈等,所以只能使用进程间通讯(IPC),而不能直接共享信息。 线程,有时被称为轻量级进程(lightweight process,LWP)是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他吸纳成共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是线程本身。

10.Android进程,按照优先顺序排列,分为哪几类?

我的答案: Andrid 5个进程及重要优先级前台进程>可见进程>服务进程>后台进程>空进程, 它们的回收优先级则反之

11.对Android线程的理解?

我的答案: 在日常项目中比较常用的多线程操作主要有: 1.Handler

2.AsyncTask

3.IntentService

一:handler的理解 优点:对于对后台任务时,简单清晰 缺点:对于操作单个后台任务,代码过于繁琐 具体操作: 在主线程中创建Handler对象并实现handlmessage()方法, 创建runnable线程,先在线程中执行耗时操作, 开启一个线程会相应的产生一个looper,在初始化looper的时候会创建一个消息队列MessageQueue(); 执行完耗时操作,通过handler将消息发送到消息队列中、、looper轮询消息队列将消息取出来交给Handler, Handler接收到取出来的消息,并根据消息类型做出相应的处理

二:AsyncTask的理解 优点:操作简单方便,过程可控 缺点:对于多异步操作更新UI会变得很繁琐 具体操作: onPreExecute()运行在主线程中,开启线程前的准备操作, doInBackground()运行在子线程中, onPreExecute()之后的操作,用于处理耗时操作,通过调用publishProcess()向 onProcessUpdata()推送消息 onProcessUpdata()运行在主线程中,当调用 publishProcess()方法时就会开启此方法,接收到推送过来的数据,更新UI进度页面 onPostExecute()运行在主线程中,当子线程耗时操作执行完毕后会调用此方法, doInBackground()返回的参数传递到这里来用于更新UI 调用execute()方法开启AsyncTask,类似runnable的start()方法

三:IntentService的理解 IntentService和普通的Service区别在于,IntentService在oncreate()方法中单独开启一个线程用于耗时操作 通过onHandleIntent(Intent intent)方法来处理耗时操作 在耗时操作执行完毕之后,会自动关闭service不用手动关闭 如果同时new出多个IntentService对象进行耗时操作,oncreate()和ondestory()方法会执行一次,onstart()、onstartcommand()、onHandleIntent()会执行多次。 执行完毕自动关闭service

12.什么是服务。

我的答案: Service是一个应用组件,它用来在后台完成一个时间跨度比较大的工作,且没有关联任何界面。(生命周期在应用程序进程的主线程运行) 一个Service可以完成的工作:访问网络(在Service中启动分线程)、播放音乐、文件IO操作、大数据量的数据库操作等。如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在分线程中处理,避免在主线程中阻塞用户界面。 特点:Service在后台运行,不用与用户进行交互。即使应用退出,服务也不会停止。当应用进程被杀死时(例如一键清理),服务便会停止。

13.本地服务与远程服务的优缺点各是什么?

我的答案: 其实都是服务,提供的功能一致,只是一个在本地,一个在其它进程。 本地服务 --local service:服务运行在当前的应用程序里面 远程服务 --remote service:服务运行在其他的应用程序里面

14.如何实现本地服务绑定方式的启动与停止?

我的答案: 服务(Service)的停止和启动

1 .如果service是非绑定的,最终当任务完成时,为了节省系统资源,一定要停止service,可以通过stopSelf()来停止,也可以在其他组件中通过stopService()来停止。 绑定的service可以通过onUnBind()来停止service。

有了 Service 类我们如何启动他呢,有两种方法:•Context.startService() •Context.bindService()在同一个应用任何地方调用startService() 方法就能启动Service 了,然后系统会回调Service 类的 onCreate() 以及 onStartCommand() 方法。这样启动的Service 会一直运行在后台,直到Context.stopService() 或者 StopSelf() 方法被调用。另外如果一个Service 已经被启动,其他代码再试图调用startService() 方法,是不会执行onCreate() 的,但会重新执行一次onStartCommand() 。另外一种 bindService() 方法的意思是,把这个Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方法你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 的onStartCommand()。15.简述服务的生命周期。我的答案:

1.Call to startService()-----onCreate()-----onStartCommand()-----Service running----(The service is stopped by itself or a client)-----onDestory() 2.Call to bindService()-----onCreate()-----onBind()-----Clients are bounding to service ----(All clients all unbind by calling unbindService)-----onUnBind()----onDestory()

16.简述广播的两种类型。

我的答案: 无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到)

有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序

17.广播的注册方式有哪几种?如何实现?请作一说明。

我的答案: 首先写一个类要继承BroadcastReceiver 第一种:在清单文件中

相关推荐: