android面试题及答案
常见Android面试题及答案(详细整理)
常见Android⾯试题及答案(详细整理)1. 请描述⼀下Activity ⽣命周期。
答: 如下图所⽰。
共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。
onCreate(): 创建Activity时调⽤,设置在该⽅法中,还以Bundle的形式提供对以前存储的任何状态的访问。
onStart(): Activity变为在屏幕上对⽤户可见时调⽤。
onResume(): Activity开始与⽤户交互时调⽤(⽆论是启动还是重新启动⼀个活动,该⽅法总是被调⽤。
onPause(): Activity被暂停或收回cpu和其他资源时调⽤,该⽅法⽤户保护活动状态的,也是保护现场。
onStop(): Activity被停⽌并转为不可见阶段及后续的⽣命周期事件时调⽤。
onRestart(): Activity被重新启动时调⽤。
该活动仍然在栈中,⽽不是启动新的Activity。
1、完整⽣命周期: 即从⼀个Activity从出现到消失,对应的周期⽅法是从onCreate()到onDestroy()。
2、可见⽣命周期: 当Activity处于可以⽤户看见的状态,但不⼀定能与⽤户交互时,将多次执⾏从onStart()到onStop()。
3、前景⽣命周期: 当Activity处于Activity栈最顶端,能够与其他⽤户进⾏交互时,将多次执⾏从onResume()到onPause()。
2. 两个Activity之间跳转时必然会执⾏的是哪⼏个⽅法。
答: 两个Activity之间跳转必然会执⾏的是下⾯⼏个⽅法。
onCreate()//在Activity⽣命周期开始时调⽤。
onRestoreInstanceState()//⽤来恢复UI状态。
onRestart()//当Activity重新启动时调⽤。
android面试问题与答案
android面试问题与答案View重绘和内存泄露的好像是面试经常问的问题1. View的刷新:在需要刷新的地方,使用handle.sendmessage发送信息,然后在handle的getmessage里面执行invaliate或者postinvaliate.2. GC 内存泄露出现情况:1.数据库的cursor没有关闭2.构造adapter时,没有使用缓存contentview衍生listview的优化问题—–减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/3.Bitmap对象不使用时采用recycle()释放内存4.activity中的对象的生命周期大于activity调试方法: DDMS== HEAPSZIE== dataobject== [Total Size]还有其他问题,大家欢迎提出阿,可以是整体架构的,还有这个Hal层.这篇文章会涉及到以下几个内容一Activity的生命周期二让Activity变成一个窗口:Activity 属性设定三你后台的Activity被系统回收怎么办:onSaveInstanceState四调用与被调用:我们的通信使者–Intent 一Activity的生命周期和其他手机平台的应用程序一样,Android 的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。
简单地说一下为什么是这样:我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。
言归正传,Activity的基本生命周期如下代码所示:Java 代码publicclass MyActivity extends Activity {protectedvoid onCreate(Bundle savedInstanceState);protectedvoid onStart();protectedvoid onResume();protectedvoid onPause();protectedvoid onStop();protectedvoid onDestroy();}public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }你自己写的Activity会按需要重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是onCreate - onStart - onResume, 在Activity被干掉的时候顺序是onPause - onStop - onDestroy ,这样就是一个完整的生命周期,但是有人问了,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause- onStop ,恢复的时候onStart- onResume ,如果打断这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复的时候onResume 。
Android面试题附答案
Android面试题附答案一、选择题(30题,每题1.5分,共45分)1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g)A、输入流和输出流B、字节流和字符流C、节点流和处理流D、File stream E、Pipe stream F、Random stream G、Filter stream2.下列代码的执行结果是:(b)public class Test3{public static void main(String args[]){System.out.print(100%3);System.out.print(“,”);System .out.println(100%3.0);}}A、1,1B、1,1.0C、1.0,1D、1.0,1.03.在继承中,关于构造方法的说明,下列说法错误的是(d)A、子类无条件的继承父类的无参构造方法,B、子类可以引用父类中的有参构造方法,使用super关键字,C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法,D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。
4.以下程序的运行结果为(b)public class IfTest{public static void main(String args[]){int x=3;int y=1;if(x==y)System.out.println(“Not equal”);elseSystem.out.println(“Equal”);}}A、Not equal B、Equal C、无输出D、编译出错5.Java语言中字符串“学Java”所占的内存空间是(a)A. 6个字节B. 7个字节C. 10个字节D. 11个字节6.关于下列程序段的输出结果,说法正确的是:(d )public class MyClass{static int i;public static void main(String argv[]){System.out.println(i);}}A、有错误,变量i没有初始化。
Android开发工程师岗位面试题及答案(经典版)
Android开发工程师岗位面试题及答案1.请介绍一下您在Android开发方面的经验。
答:我在过去的X年中,一直从事Android应用开发工作。
我曾参与开发了多个项目,涵盖了各种领域,如电子商务、社交媒体以及物联网。
我熟悉AndroidSDK、Java和Kotlin编程语言,能够设计并优化用户界面、处理数据、进行性能调优等。
2.请解释一下MVC(Model View Controller)和MVVM (ModelView View Model)的架构模式。
答:MVC是一种将应用程序分为模型、视图和控制器的架构,用于分离数据、用户界面和应用逻辑。
MVVM是MVC的演变,引入了ViewModel层来处理视图和数据之间的通信,通过数据绑定实现更松散的耦合。
3.在Android中,什么是Content Provider?它的作用是什么?答:Content Provider用于在不同的应用程序之间共享数据。
它提供了一种标准的接口,允许应用访问和修改其他应用的数据,如联系人、媒体文件等。
4.如何在Android应用中处理不同屏幕尺寸和分辨率的适配?答:为了适配不同屏幕,可以使用不同的布局文件、尺寸单位和限定符。
例如,可以创建不同分辨率的资源文件夹,以确保应用在各种屏幕上都能正确显示。
5.请讲解一下Android中的线程和异步任务处理。
答:在Android中,主线程负责处理UI更新,而耗时操作应该在后台线程中执行,以避免阻塞主线程。
可以使用Thread、Handler、Async Task或RxJava等来管理线程和执行异步任务。
6.什么是Depend encyIn jection(依赖注入)?为什么在Android 开发中使用它?答:依赖注入是一种设计模式,用于将依赖关系从代码中分离出来,以提高可维护性和测试性。
在Android开发中,使用依赖注入可以更轻松地管理组件之间的依赖关系,例如使用Dagger框架。
安卓面试题及答案详解版
安卓面试题及答案详解版1. 问题:什么是Android操作系统?答案: Android操作系统是一种基于Linux内核的开源操作系统,主要用于触屏移动设备,如智能手机和平板电脑。
它由Google公司开发并发布,允许设备制造商和开发者自由地修改和分发。
2. 问题:请解释Android的架构。
答案: Android架构从下到上分为四个层次:- 应用层:包含用户界面和应用程序。
- 应用框架层:提供应用程序开发接口(API)。
- 运行时环境层:包括Android核心库和Android运行时环境。
- Linux内核层:提供底层的硬件抽象层、内存管理、进程管理等功能。
3. 问题: Android应用是如何打包的?答案: Android应用通常使用APK(Android Package)格式进行打包。
APK文件是一个压缩文件,包含应用的代码、资源、资产、库和AndroidManifest.xml文件。
4. 问题:什么是Activity?答案: Activity是Android应用程序中的基本构建块,用于定义用户界面和用户交互。
每个Activity都是一个独立的屏幕,用户可以与之交互。
5. 问题:请解释Intent的概念。
答案: Intent是Android中用于请求操作的抽象描述符。
它可以用于启动Activity、启动服务或广播信息。
Intent可以显式地指定目标组件,也可以隐式地通过Intent Filter来匹配。
6. 问题:如何在Android中处理网络请求?答案:在Android中处理网络请求通常使用HTTP客户端库,如OkHttp或Retrofit。
这些库提供了简化的API来发送HTTP请求和接收响应。
7. 问题:解释Android中的Context对象。
答案: Context是Android中一个非常关键的类,它允许访问应用程序环境的全局信息。
Context可以用于启动Activity、获取资源、启动服务等。
Android面试题-带答案
Android面试题-带答案1.介绍一下Android系统的体系结构答:应用层:android的应用程序通常涉及用户界面和交互。
应用框架层:UI组件、各种管理器等。
函数库层:系统C库、媒体库、webkit、SQLite等。
linux核心库:linux系统运行的组件。
2.Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型3.请介绍下Android的数据存储方式。
答:一.SharedPreferences方式二.文件存储方式三.SQLite数据库方式四.内容提供器(Content provider)方式五. 网络存储方式4.说说mvc模式的原理答:mvc是model,view,controller的缩写,mvc包含三个部分:模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
视图(view)对象:是应用程序中负责生成用户界面的部分。
也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。
android 面试题及答案
android 面试题及答案Android面试题及答案Android作为目前全球最主流的移动操作系统之一,为许多开发者提供了广阔的机会。
然而,要在Android开发领域取得成功并不容易。
在面试过程中,面试官常常会提问一些关于Android开发的问题,以考察面试者的技术能力和经验。
本文将介绍一些常见的Android面试题,并提供相应的答案。
一、Java基础1. Java中的面向对象特性是什么?请举例说明。
答案:Java中的面向对象特性包括封装、继承和多态。
封装是将数据和方法封装在一个类中,以提高代码的可维护性和安全性。
继承是通过创建子类来继承父类的属性和方法。
多态允许不同类的对象对同一方法作出不同的响应。
2. 抽象类和接口有什么区别?答案:抽象类是一个类,可以包含具体方法和抽象方法,有时候用于模板设计模式。
接口是一组完全抽象的方法集合,没有具体的实现,用于实现类的多继承。
类可以实现多个接口,但只能继承一个抽象类。
二、Android基础1. 请解释一下Activity的生命周期。
答案:Activity的生命周期主要包括以下几个方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()和onDestroy()。
onCreate()在Activity被创建时调用,onStart()在Activity可见但无法响应用户输入时调用,onResume()在Activity可见并可以响应用户输入时调用,onPause()在Activity失去焦点但仍可见时调用,onStop()在Activity完全不可见时调用,onRestart()在Activity重新启动时调用,onDestroy()在Activity被销毁时调用。
2. 请解释一下Android中的四大组件。
答案:Android中的四大组件分别是Activity、Service、Content Provider和Broadcast Receiver。
Android面试题集合(含答案)
.云时代Android面试题集[键入文档副标题]目录第一章 Android最全面试题 71道题 (4)一、选择题 (4)二.填空和问答 (9)25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (9)26. android 的四大组件是__Activity Service BrodcastReceiverContentProvier。
(9)27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。
(9)28. android 中service的启动方法有:__startService____bindService_ (9)29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreateonStart onResume onPause onStop onDestroy onRestart (9)30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (10)31. 当启动一个 Activity 并且新的 Activity 执行完后需要返回到启动它的Activity 数据,启动新Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函数是void onActivityResult(int requestCode,intresultCode,intent data)_。
(10)33.下面程序运行的结果是:______________。
android面试题及答案
android面试题及答案一、Activity 生命周期相关1. 请简述Activity的生命周期,并解释每个状态的含义。
- Activity生命周期主要包括 onCreate(), onStart(), onResume(), onPause(), onStop(), 和 onDestroy() 方法。
onCreate() 在Activity第一次创建时调用,用于初始化界面和数据。
onStart() 当Activity对用户可见时调用,表示Activity已经部分准备好与用户交互。
onResume() 当Activity准备与用户交互时调用,此时Activity处于前台。
onPause() 当Activity失去焦点,但未完全退出时调用,用于保存数据和清理资源。
onStop() 当Activity完全不再显示在屏幕上时调用,释放资源。
onDestroy() 当Activity被系统销毁时调用,用于做最后的清理工作。
2. Activity A跳转到Activity B,再按返回键,生命周期如何调用? - 当从Activity A跳转到Activity B时,Activity A的onPause()会被调用,然后是onStop(),而Activity B会依次调用onCreate(),onStart(),onResume()。
按返回键从Activity B返回到Activity A时,Activity B会依次调用onPause()和onStop(),Activity A则会依次调用onRestart(), onStart()和onResume()。
二、Intent 相关1. 请解释Intent的基本作用及其使用场景。
- Intent是Android中用于组件间通信的一种机制,它可以用于启动Activity,Service,发送广播等。
常见的使用场景包括从一个Activity启动另一个Activity,或者向Service发送数据。
Android面试题及答案.doc
Android面试题及答案1.请描述下Activity的生命周期。
必调用的三个方法:onCreate() –> onStart() –> onResume(),用AAA表示(1)父Activity启动子Activity,子Actvity退出,父Activity 调用顺序如下AAA –> onFreeze() –> onPause() –> onStop() –> onRestart() –> onStart(),onResume() …(2)用户点击Home,Actvity调用顺序如下AAA –> onFreeze() –> onPause() –> onStop() —Maybe –> onDestroy() – Maybe(3)调用finish(),Activity调用顺序如下AAA –> onPause() –> onStop() –> onDestroy()(4)在Activity上显示dialog,Activity调用顺序如下AAA(5)在父Activity上显示透明的或非全屏的activity,Activity 调用顺序如下AAA –> onFreeze() –> onPause()(6)设备进入睡眠状态,Activity调用顺序如下AAA –> onFreeze() –> onPause()2.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?onSaveInstanceState()当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。
B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
android面试题目及其答案大全
面试题目及其答案1,++i和i++ 区别2,makefile文件代码,写代码3,隐藏与重写的区别4,linux 基本命令使用如:如何查询帮助文档(man),如何查处文件(fiind),常用命令5,进程间通信有几种,效率如何6、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?7,tcp/ip 有几层8、一条最长的短信息约占多少byte?9,p2p 和SMTP分别在哪层10、android中的动画有哪几类,它们的特点和区别是什么?11,多态概念(父类引用子类参数)12、handler机制的原理13,java 写1+N的和14,数据结构与算法如排序,二叉树15,MVC概念(为什么有DAO层,什么作用)16,GC回收机制17、说说mvc模式的原理,它在android中的运用18,android项目自述19,java 的进程与线程维护20、Activity的生命周期21,N*N 打印出来的样子是(例如N=4) 1 2 3 412 13 14 511 16 15 610 9 8 722,linux 末行,输入,命令三个模式23、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念24,android 四层架构分别的作用(android系统框图)25、sim卡的EF 文件有何作用26,android四大组件,生命周期,onpause()与onstop()的区别27,UMI建模概念28,C语言打印N*N数组,规律如下:2维 1 23 43维 1 2 38 9 47 6 54维 1 2 3 412 13 14 511 16 15 610 9 8 71、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
android工程师面试题及答案
android工程师面试题及答案Android工程师作为移动应用开发领域的专家,需要具备扎实的编程基础和丰富的实践经验。
为了帮助准备面试的Android工程师们更好地应对面试,本文将提供一些常见的Android工程师面试题及其答案。
以下是几个常见的面试题及答案供您参考:1. 什么是Intent?它的作用是什么?答:Intent是Android应用程序之间进行通信的一种机制。
它可以用于启动一个Activity、启动一个Service、发送广播以及传递数据。
Intent分为显示Intent和隐式Intent,其中显示Intent指明了要启动的组件的类名,而隐式Intent则指明了要启动的组件的功能。
2. 请解释一下Android四大组件。
答:Android四大组件包括Activity、Service、BroadcastReceiver和ContentProvider。
- Activity:它是用户与应用交互的界面,负责展示数据和处理用户的输入。
- Service:它是在后台执行长时间运行操作的组件,没有用户界面。
- BroadcastReceiver:它用于接收系统或应用发出的广播消息,并做出相应的处理。
- ContentProvider:它用于应用之间共享数据,以及对数据进行增删改查的操作。
3. 什么是生命周期(Lifecycle)?请列举一些常见的生命周期方法。
答:生命周期是指Android组件在创建、运行和销毁的过程中所经历的状态变化。
以下是Activity的一些常见的生命周期方法:- onCreate():Activity被创建时调用,用于初始化界面和变量。
- onStart():Activity可见但不可交互时调用。
- onResume():Activity可见且可交互时调用,通常用来注册监听器和启动动画。
- onPause():Activity失去焦点但仍可见时调用,用于保存用户数据和释放资源。
Android面试题集合(含答案)
目录第一章An droid 最全面试题71道题 (4)一、选择题4二. 填空和问答 (11)25. an droid中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、云时代An droid面试题集[键入文档副标题]LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) .. 1126. an droid 的四大组件是Activity Service BrodcastReceiver ContentProvier。
(12)27. java.io 包中的ObiectlnputStream 禾口ObiectOutputStream 类主要用于对对象(Object)的读写。
(12)28. an droid 中service 的启动方法有:_startService bi ndService (12)29. activity 一般会重载7个方法用来维护其生命周期,分别是:on Create on StartonResume onPause onStop onDestroy onRestart (12)30. an droid的数据存储的方式有:SharedPrefere nces数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (12)31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity数据,启动新Activity 的方法是startActivityForResult(intent,RequestCode),用来处理返回数据的Activity 回调函数是void onActivityResult(int requestCode,intresultCode.intent data)_。
(13)33. 下面程序运行的结果是:—_。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一选择题(可多选,30分)1、关于BroadcastReceiver说法正确的是(AB)A、BroadcastReceiver有两种注册方式,静态注册和动态注册B、Broadcast分正常广播和有序广播,其中有序广播可以被停止掉,不传给下一个接受者C、Broadcast Receiver 提供了可视化的界面来显示广播信息D、BroadcastReceiver的onReceive函数里可以使用线程来执行耗时的操作2、关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(D)A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.3 android 中下列关于Intent说法正确的是(C)A、实现应用程序间的数据共享B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带D、处理一个应用程序整体性的工作4 android 关于service生命周期的onCreate()和onStart()说法正确的是(AD)A、当第一次启动的时候先后调用onCreate()和onStart()方法B、当第一次启动的时候只会调用onCreate()方法C、如果service已经启动,将先后调用onCreate()和onStart()方法D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法5.在异常处理中,如释放资源、关闭文件、关闭数据库等由( C)来完成。
A.try子句B.catch子句C.finally子句D.throw子句6.关于Collections说法正确的是(AC)A.Collections 包含有各种有关集合操作的静态多态方法B.Collections是集合类的一个顶级接口,C.Collections 是一个包装类,此类不能实例化D.List是Collections的子接口7.关于java抽象类说法正确时是(AC)A.抽象类可以有私有方法或私有变量,抽象类中的变量默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值。
B.抽象类中只能有抽象方法C.抽象类中可以有具体实现的方法D.抽象类子类可以选择实现部分抽象方法8.关于接口的说法正确的是(ABC)A.接口的实现类必须实现接口的所有方法。
B.接口必须是公开的(public)的,不能由私有(private)的方法或变量;C.接口中的变量必须是public static final,且必须给其初值,实现类中不能重新定义,也不能改变其值;D.接口中可以提供部分方法的具体实现9.关于Android中SQLiteOpenHelper类说法正确是是(ABD)A.SQliteOpenHelper是一个辅助类,来管理数据库的创建和版本的管理B . SqliteOpenHelper是一个抽象类C.SqliteOpenHelper不是一个抽象类D.继承SqliteOpenHelper类,必须实现它的onCreate和onUpgrade函数10、关于ContentValues类说法正确的是(A)A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值都是基本类型B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是任意类型,而值都是基本类型C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名,可以为空,而值都是String类型D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型二填空题(每空一分27分)1、android中常用的五个布局是FrameLayout,LinearLayout,RelativeLayout ,TableLayout,Absolutelayout。
2、android 的四大组件是Activity,Service,BroadcastReceiver, 。
3、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是startActivityResult()。
4、AIDL的全称是Android Interface Define Language(Android接口定义语言),它的作用是定义进程通信接口5、Android中实现序列化的两种方式是实现Serializable接口实现Parcelable接口6、activity的启动模式standard、singleTop、singleTask、singleInstance7、Linux内核几种同步方法原子操作,自旋锁,信号量,互斥体8、Android系统中运行的第一个Dalvik虚拟机程序叫Zygote9、Android framework中定义的三种窗口类型是应用窗口类型子窗口类型系统窗口类型10、Android中大部分服务都在SystemServer进程中运行三简答题1.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?(3分)重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity 被回收之前调用,通过重写onRestoreInstanceState()方法可以从中提取保存好的数据。
2.简述Android中Looper、Hander、MessageQueue消息系统机制(7分)Android提供了Handler 和Looper 来满足线程间的通信。
Handler 先进先出原则。
Looper 类用来管理特定线程内对象之间的消息交换。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue:用来存放线程放入的消息。
运行机制:每个线程都可以并仅可以拥有一个Looper实例和一根消息队列MessageQueue。
Android应用在启动的时候会默认会为主线程创建一个Looper实例。
而在子线程中,Looper 需要通过显式调用Looper.Prepare()方法进行创建,并通过调用Looper.loop(),让线程的消息队列开始运行,可以接收消息了。
Handler在创建的时候可以指定Looper,这样通过Handler 的sendMessage()方法发送出去的消息就会添加到指定Looper里面的MessageQueue里面去。
在不指定Looper的情况下,Handler绑定的是创建它的线程的Looper。
整个消息处理的大概流程是:1. 包装Message对象(指定Handler、回调函数和携带数据等);2. 通过Handler的sendMessage()等类似方法将Message发送出去;3. 在Handler 的处理方法里面将Message添加到Handler绑定的Looper的MessageQueue;4. Looper的loop()方法通过循环不断从MessageQueue里面提取Message进行处理,并移除处理完毕的Message;5. 通过调用Message绑定的Handler对象的dispatchMessage()方法完成对消息的处理。
3.简述Android中binder机制(5分)binder用来实现不同进程之间的通信。
binder属于一个驱动,工作在linux层面,运行在内核态,它的操作是基于一段内存。
所以我们开发的程序中对binder的使用都是通过系统的调用来完成的。
Binder架构由服务端Server,binder驱动,客户端Client三个部分构成,Server 注册服务,Server作为众多服务的拥有者,当它想向Client提供服务时,得先去Service Manager那儿注册自己的服务。
Server可以注册一个或多个服务。
Client申请服务,Client 作为服务的使用者,当它想使用服务时,得向Service Manager申请自己所需要的服务。
Client 可以申请一个或多个服务。
当Client申请服务成功后,Client就可以通过binder驱动和Server 通信。
4.简述Service启动方式及区别(7分)Service需要通过调用Context.startService()或Context.bindService()方法启动。
但是它们的使用场合有所不同。
使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。
使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。
如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。
采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。
用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。