搜档网
当前位置:搜档网 › Android面试题总结强劲版-LhyPKU

Android面试题总结强劲版-LhyPKU

Android面试题总结强劲版-LhyPKU
Android面试题总结强劲版-LhyPKU

android面试题总结加强版1.activity的生命周期

2.横竖屏切换时候activity的生命周期

1)不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次.

2)设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次.

3)设置Activity的android:configChanges="orientation | keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.

3.android中的动画有哪几类,它们的特点和区别是什么?

两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

4.一条最长的短信息约占多少byte?

中文70(包括标点),英文160个字节。

5.handler机制的原理

android提供了Handler 和Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。

1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。

2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。

3)Message Queue(消息队列):用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。

6.什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统

吗?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于Linux内核的,因此属于软实时。

7.android中线程与线程,进程与进程之间如何通信

1)一个Android 程序开始运行时,会单独启动一个Process。

默认情况下,所有这个程序中的Activity或者Service都会跑在这个Process。

默认情况下,一个Android程序也只有一个Process,但一个Process下却可以有许多个Thread。

2)一个Android 程序开始运行时,就有一个主线程Main Thread被创建。该线程主要负责UI界面的显示、更新和控件交互,所以又叫UI Thread。

一个Android程序创建之初,一个Process呈现的是单线程模型--即Main Thread,所有的任务都在一个线程中运行。所以,Main Thread所调用的每一个函数,其耗时应该越短越好。而对于比较费时的工作,应该设法交给子线程去做,以避免阻塞主线程(主线程被阻塞,会导致程序假死现象)。

3)Android单线程模型:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。如果在子线程中直接修改UI,会导致异常。

8.Android DVM的进程和Linux的进程, 应用程序的进程是否为同一个

概念

DVM指Dalivk虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

9.sim卡的EF文件有何作用

sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的。

10.让Activity变成一个窗口:Activity属性设定

讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很简单你只需要设置一下Activity的主题就可以了在AndroidManifest.xml 中定义Activity的地方一句话:xml代码

1. android:theme="@android:style/Theme.Dialog"

这就使你的应用程序变成对话框的形式弹出来了,或者

xml代码

1. android:theme="@android:style/Theme.Translucent"

就变成半透明的,[友情提示-.-]类似的这种activity的属性可以在android.R.styleable 类的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的属性的介绍都可以参考这个类android.R.styleable

上面说的是属性名称,具体有什么值是在android.R.style中可以看到,比如这个"@android:style/Theme.Dialog" 就对应于android.R.style.Theme_Dialog ,('_'换成'.' < --注意:这个是文章内容不是笑脸)就可以用在描述文件中了,找找类定义和描述文件中的对应关系就都明白了。

11.如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?

可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw目录中。

12.如何将打开res aw目录中的数据库文件?

在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources ().openRawResource方法获得res aw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

13.在android中MVC的具体体现

Android 的官方建议应用程序的开发采用MVC 模式。MVC 是Model,View,Controller 的缩写,MVC 是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器:

?模型(Model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。

?视图(View)对象:是应用程序中负责生成用户界面的部分。也是在整个MVC 架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。

?控制器(Control)对象:是根据用户的输入,控制用户界面数据显示及更新Model对象状态的部分,控制器更重要的一种导航功能,响应用户触发的相关事件,交给Model处理。即要求在Application开发中你把商业逻辑,界面显示,数据分离。

Android 鼓励弱耦合和组件的重用,在Android 中MVC 的具体体现如下

1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和JavaScript之间的通信,幸运的是,android提供了它们之间非常方便的通信实现。

2)控制层(controller):android的控制层的重任通常落在了众多的activity的肩上,这句话也就暗含了不要在activity中写代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android 中的activity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。

MVC模式不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性。

14.Android系统的架构

android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层

到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。

1.应用程序

Android会同一系列核心应用程序包一起发布,该应用程序包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JA V A语言编写的。

2.应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

?丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。

?内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据

?资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files )。

?通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。

?活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

有关更多的细节和怎样从头写一个应用程序,请参考如何编写一个Android 应用程序.

3.系统运行库

1)程序库

Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:

?系统C 库- 一个从BSD 继承来的标准 C 系统函数库(libc ),它是专门为基于embedded linux 的设备定制的。

?媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

?Surface Manager - 对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

?LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

?SGL - 底层的2D图形引擎

?3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

?FreeType -位图(bitmap)和矢量(vector)字体显示。

?SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

2)Android 运行库

Android 包括了一个核心库,该核心库提供了JA V A编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JA V A编译器编译,然后

通过SDK中的“dx” 工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。

4.Linux 内核

Android 的核心系统服务依赖于Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。

15.Android常用控件的信息

?单选框(RadioButton与RadioGroup)

RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。

事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener 实例作为参数传入。

?多选框(CheckBox):

每个多选框都是独立的,可以通过迭代所有的多选框,然后根据其状态是否被选中在获取其值。

事件:setOnCheckChangeListener()处理多选框被选择事件。把CompoundButton.OnCheckedChangeListener 实例作为参数传入

?下拉列表框(Spring):

Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。

事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把AdapterView.OnItemSelectedListener实例作为参数传入;

?拖动条(SeekBar):

SeekBar.getProgress()获取拖动条当前值

事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入。

?菜单(Menu):

重写Activity的onCreatOptionMenu(Menu menu)方法,该方法用于创建选项菜单,当用户按下手机的"Menu"按钮时就会显示创建好的菜单,在onCreatOptionMenu(Menu Menu)方法内部可以调用Menu.add()方法实现菜单的添加。

重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件。

?进度对话框(ProgressDialog):

创建并显示一个进度对话框:ProgressDialog.show(ProgressDialogActivity.this,"请稍等","数据正在加载中....",true);

设置对话框的风格:setProgressStyle()

ProgressDialog.STYLE_SPINNER 旋转进度条风格(为默认风格)

ProgressDialog.STYLE_HORIZONTAL 横向进度条风格

16.请介绍下Android中常用的五种布局

Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:FrameLayout (框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout

(表格布局)。

1.FrameLayout

这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。

2.LinearLayout

线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。

linearLayout中有一个重要的属性android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。

3.AbsoluteLayout

绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置android:layout_x="20px" android:layout_y="12px" 这种布局方式也比较简单,但是在垂直随便切换时,往往会出问题,而且多个元素的时候,计算比较麻烦。

4.RelativeLayout

相对布局可以理解为某一个元素为参照物,来定位的布局方式。主要属性有:

?相对于某一个元素

android:layout_below="@id/aaa" 该元素在id为aaa的下面

android:layout_toLeftOf="@id/bbb" 改元素的左边是bbb

?相对于父元素的地方

android:layout_alignParentLeft="true" 在父元素左对齐

android:layout_alignParentRight="true" 在父元素右对齐

还可以指定边距等,具体详见API

5.TableLayout

表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素,设定他的对齐方式android:gravity="" 。

每一个布局都有自己适合的方式,另外,这五个布局元素可以相互嵌套应用,做出美观的界面。17.如何启用Service,如何停用Service

Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:

第一步:继承Service类

public class SMSService extends Service {

}

第二步:在AndroidManifest.xml文件中的节点里对服务进行配置:

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者

与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate ()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService ()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate ()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

?服务常用生命周期回调方法如下:

onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService ()方法,服务也只被创建一次。

onDestroy()该方法在服务被终止时调用。

?与采用Context.startService()方法启动服务有关的生命周期方法

onStart()只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart()方法会被多次调用。

?与采用Context.bindService()方法启动服务有关的生命周期方法

onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用

18.ListView优化

工作原理:

ListView 针对List中每个item,要求adapter “给我一个视图” (getView)。一个新的视图被返回并显示。

如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能!

实际上Android为你缓存了视图。

Android中有个叫做Recycler的构件,下图是他的工作原理:

如果你有10亿个项目(item),其中只有可见的项目存在内存中,其他的在Recycler中。

1. ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的。

2. 当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView 此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图。

19.广播接收者生命周期

一个广播接收者有一个回调方法:void onReceive(Context curContext, Intent broadcastMsg)。当一个广播消息到达接收者时,Android调用它的onReceive()方法并传递给它包含消息的Intent对象。广播接收者被认为仅当它执行这个方法时是活跃的。当onReceive()返回后,它是不活跃的。

有一个活跃的广播接收者的进程是受保护的,不会被杀死。但是系统可以在任何时候杀死仅有不活跃组件的进程,当占用的内存别的进程需要时。

这带来一个问题,当一个广播消息的响应时费时的,因此应该在独立的线程中做这些事,远离用户界面其它组件运行的主线程。如果onReceive()衍生线程然后返回,整个进程,包括新的线程,被判定为不活跃的(除非进程中的其它应用程序组件是活跃的),将使它处于被杀的危机。解决这个问题的方法是onReceive()启动一个服务,及时服务做这个工作,因此系统知道进程中有活跃的工作在做。

20.设计模式和IoC(控制反转)

Android 框架魅力的源泉在于IoC,在开发Android 的过程中你会时刻感受到IoC 带来的巨大方便,就拿Activity 来说,下面的函数是框架调用自动调用的:

protected void onCreate(Bundle savedInstanceState);

不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转了!当然IoC 本身的内涵远远不止这些,但是从这个例子中也可以窥视出IoC带来的巨大好处。此类的例子在Android 随处可见,例如说数据库的管理类,例如说Android 中SAX 的Handler 的调用等。有时候,您甚至需要自己编写简单的IoC 实现,上面展示的多线程现在就是一个说明。

21.Android中的长度单位详解

现在这里介绍一下dp 和sp。dp 也就是dip。这个和sp 基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。dp 是与密度无关,sp 除了与密度无关外,还与scale 无关。如果屏幕密度为160,这时dp 和sp 和px 是一样的。1dp=1sp=1px,但如果使用px 作单位,如果屏

幕大小不变(假设还是3.2 寸),而屏幕密度变成了320。那么原来TextView 的宽度设成160px,在密度为320 的3.2 寸屏幕里看要比在密度为160 的3.2 寸屏幕上看短了一半。但如果设置成160dp 或160sp 的话。系统会自动将width 属性值设置成320px 的。也就是160 * 320 / 160。其中320 / 160 可称为密度比例因子。也就是说,如果使用dp 和sp,系统会根据屏幕密度的变化自动进行转换。

下面看一下其他单位的含义

?px:表示屏幕实际的象素。例如,320*480 的屏幕在横向有320个象素,在纵向有480 个象素。

?in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54 厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2 英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128 厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。

22.4种activity的启动模式

?standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。

?singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。

?singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。?singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。

23.什么是ANR 如何避免它?

ANR:Application Not Responding,五秒

在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:

对输入事件(如按键、触摸屏事件)的响应超过5秒,意向接受器(intentReceiver)超过10秒钟仍未执行完毕,Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。

因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate()和onResume()等更应如此。潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态以等待子线程结束-- 也不需要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5秒钟不被处理而产生的ANR。这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。

24.Android Intent的使用

在一个Android应用中,主要是由一些组件组成,(Activity,Service,ContentProvider,etc.)在这些组

件之间的通讯中,由Intent协助完成。

正如网上一些人解析所说,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。

Intent传递过程中,要找到目标消费者(另一个Activity,IntentReceiver或Service),也就是Intent的响应者,有两种方法来匹配:

代码简洁明了,执行了switchActivity()函数,就会马上跳转到名为TestB的Activity中。

2.隐式匹配(Implicit)

隐式匹配,首先要匹配Intent的几项值:Action, Category, Data/Type,Component

如果填写了Componet就是上例中的Test.class)这就形成了显示匹配。所以此部分只讲前几种匹配。匹配规则为最大匹配规则,

1)如果你填写了Action,如果有一个程序的Manifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent就与这个目标Action匹配,如果这个Filter段中没有定义Type,Category,那么这个Activity就匹配了。但是如果手机中有两个以上的程序匹配,那么就会弹出一个对话可框来提示说明。

Action的值在Android中有很多预定义,如果你想直接转到你自己定义的Intent接收者,你可以在接收者的IntentFilter中加入一个自定义的Action值(同时要设定Category值为"android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent的Action,就直接能跳转到你自己的Intent接收者中。因为这个Action在系统中是唯一的。

2)data/type,你可以用Uri来做为data,比如Uri uri = Uri.parse(https://www.sodocs.net/doc/f02733456.html, );

Intent i = new Intent(Intent.ACTION_VIEW,uri);手机的Intent分发过程中,会根据https://www.sodocs.net/doc/f02733456.html, 的scheme判断出数据类型type

手机的Brower则能匹配它,在Brower的Manifest.xml中的IntenFilter中首先有ACTION_VIEW Action,也能处理http:的type,

3)至于分类Category,一般不要去在Intent中设置它,如果你写Intent的接收者,就在Manifest.xml的Activity的IntentFilter中包含android.category.DEFAULT,这样所有不设置Category(Intent.addCategory(String c);)的Intent都会与这个Category匹配。

4)extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

25.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之

前保存当前状态?

当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B

这个时候A会执行

public void onSaveInstanceState(Bundle outState){

super.onSaveInstanceState(outState);

outState.putLong("id", 1234567890);

}

B 完成以后又会来找A,这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A 就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState,没被收回的就还是onResume就好了。

savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,如果正常启动onCreate就不会有它,所以用的时候要判断一下是否为空。

if(savedInstanceState != null){

long id = savedInstanceState.getLong("id");

}

就像官方的Notepad教程里的情况,你正在编辑某一个note,突然被中断,那么就把这个note的id 记住,再起来的时候就可以根据这个id去把那个note取出来,程序就完整一些。这也是看你的应用需不需要保存什么,比如你的界面就是读取一个列表,那就不需要特殊记住什么,哦,没准你需要记住滚动条的位置...

26.如何退出Activity

对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。现提供几个方法,供参考:

1.抛异常强制退出:该方法通过抛异常,使程序Force Close。验证可以,但是,需要解决的问题是,如

何使程序结束掉,而不弹出Force Close的窗口。

2.记录打开的Activity:每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

3.发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

4.递归退出在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处

理,递归关闭。除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。但是这样做同样不完美。你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。但至少,我们的目的达到了,而且没有影响用户使用。为了编程方便,最好定义一个Activity基类,处理这些共通问题。

27.请解释下在单线程模型中Message、Handler、Message Queue、Looper

之间的关系。

1.Message Queue(消息队列):用来存放通过Handler发布的消息,通常附属于某一个创建它的线程,可

以通过Looper.myQueue()得到当前线程的消息队列

2.Handler:可以发布或者处理一个消息或者操作一个Runnable,通过Handler发布消息,消息将只会发

送到与它关联的消息队列,然也只能处理该消息队列中的消息

3.Looper:是Handler和消息队列之间通讯桥梁,程序组件首先通过Handler把消息传递给Looper,Looper

把消息放入队列。Looper也把消息队列里的消息广播给所有的Handler,Handler接受到消息后调用handleMessage进行处理

4.Message:消息的类型,在Handler类中的handleMessage方法中得到单个的消息进行处理.

28.你如何评价Android系统?优缺点。

答:优点:1、学习的开源性

2、软件兼容性比较好

3、软件发展迅速

4、界面布局好

缺点:1、版本过多

2、先有软件少

3、商务性能差

29.谈谈android数据存储方式。

Android提供了5种方式存储数据:

1.使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制,采用了

XML格式将数据存储到设备中。只能在同一个包内使用,不能在不同的包之间使用。

2.文件存储数据;文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实

现I/O的程序是完全一样的,提供了openFileInput()和openFileOutput()方法来读取设备上的文件。

3.SQLite数据库存储数据;SQLite是Android所带的一个标准的数据库,它支持SQL语句,它是一个轻

量级的嵌入式数据库。

4.使用ContentProvider存储数据;主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或

读取此Content Provider的各种数据类型。

5.网络存储数据;通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空

间中的数据信息。

30.Android中Activity, Intent, Content Provider, Service各有什么区别。 Activity:活动,是最基本的android应用程序组件。一个活动就是一个单独的屏幕,每一个活动都被实

现为一个独立的类,并且从活动基类继承而来。

?Intent:意图,描述应用想干什么。最重要的部分是动作和动作对应的数据。

?Content Provider:内容提供器,android应用程序能够将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。当你想将你的应用数据和其他应用共享时,内容提供器就可以发挥作用了。?Service:服务,具有一段较长生命周期且没有用户界面的程序。

31.View, surfaceView, GLSurfaceView有什么区别。

?view是最基础的,必须在UI主线程内更新画面,速度较慢。

?SurfaceView 是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快?GLSurfaceView 是SurfaceView的子类,opengl 专用的

32.Manifest.xml文件中主要包括哪些信息?

?manifest:根节点,描述了package中所有的内容。

?uses-permission:请求你的package正常运作所需赋予的安全许可。

?permission:声明了安全许可来限制哪些程序能你package中的组件和功能。

?instrumentation:声明了用来测试此package或其他package指令组件的代码。

?application:包含package中application级别组件声明的根节点。

?activity:Activity是用来与用户交互的主要工具。

?receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。?service:Service是能在后台运行任意时间的组件。

?provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。

33.根据自己的理解描述下Android数字签名。

1.所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序

2.Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证

3.如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用

adt插件或者ant工具生成的调试证书来发布。

4.数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经

安装在系统中,即使证书过期也不会影响程序的正常功能。

34.AIDL的全称是什么?如何工作?能处理哪些类型的数据?

AIDL全称Android Interface Definition Language(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程跨界对象访问的目的.AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.理论上, 参数可以传递基本数据类型和String, 还有就是Bundle的派生类, 不过在Eclipse中,目前的ADT不

支持Bundle做为参数,

具体实现步骤如下:

1.创建AIDL文件,在这个文件里面定义接口,该接口定义了可供客户端访问的方法和属性。

2.编译AIDL文件,用Ant的话,可能需要手动,使用Eclipse plugin的话,可以根据adil文件自动生产java

文件并编译,不需要人为介入。

3.在Java文件中,实现AIDL中定义的接口。编译器会根据AIDL接口,产生一个JA V A接口。这个接口

有一个名为Stub的内部抽象类,它继承扩展了接口并实现了远程调用需要的几个方法。接下来就需要自己去实现自定义的几个接口了。

4.向客户端提供接口ITaskBinder,如果写的是service,扩展该Service并重载onBind ()方法来返回一

个实现上述接口的类的实例。

5.在服务器端回调客户端的函数。前提是当客户端获取的IBinder接口的时候,要去注册回调函数,只有这

样,服务器端才知道该调用那些函数

AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。由于远程调用的需要,这些参数和返回值并不是任何类型。下面是些AIDL支持的数据类型:

1)不需要import声明的简单Java编程语言类型(int,boolean等)

2)String,CharSequence不需要特殊声明

3)List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型.

(另外: 我没尝试Parcelables, 在Eclipse+ADT下编译不过, 或许以后会有所支持).

?实现接口时有几个原则:

1.抛出的异常不要返回给调用者. 跨进程抛异常处理是不可取的.

2.IPC调用是同步的。如果你知道一个IPC服务需要超过几毫秒的时间才能完成地话,你应该避免在

Activity的主线程中调用。也就是IPC调用会挂起应用程序导致界面失去响应. 这种情况应该考虑单起一个线程来处理.

3.不能在AIDL接口中声明静态属性。

?IPC的调用步骤:

1.声明一个接口类型的变量,该接口类型在.aidl文件中定义。

2.实现ServiceConnection。

3.调用ApplicationContext.bindService(),并在ServiceConnection实现中进行传递.

4.在ServiceConnection.onServiceConnected()实现中,你会接收一个IBinder实例(被调用的Service).

调用YourInterfaceName.Stub.asInterface((IBinder)service)将参数转换为YourInterface类型。

5.调用接口中定义的方法。你总要检测到DeadObjectException异常,该异常在连接断开时被抛出。它只

会被远程方法抛出。

6.断开连接,调用接口实例中的ApplicationContext.unbindService()

35.android:gravity与android:layout_gravity的区别

LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。

举个例子,我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中居中显示。来实践以下:

正如我们所看到的,在EditText中,其中的文字已经居中显示了,而EditText组件自己也对齐到了

这两个属性也可以用于Framlayout Textview 等等,表示的意思大同小异

36.padding与margin的区别

padding填充的意思,指的是view中的content与view边缘的距离,类似文本中的indent。而margin 表示的是view的左边缘与parent view的左边缘的距离。margin一般用来描述控件间位置关系,而padding 一般描述控件内容和控件的位置关系。

简单的说,padding是站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。例如我的XML layout代码如下:

37.注册广播接收者两种方式的区别

现在我们就来实现一个简单的广播程序。Android提供了两种注册广播接受者的形式,分别是在程序中动态注册和在xml中指定。他们之间的区别就是作用的范围不同,程序动态注册的接收者只在程序运行过程中有效,而在xml注册的接收者不管你的程序有没有启动有会起作用。

38.Dalvik基于JVM的改进

1.几个class变为一个dex,constant pool,省内存

2.Zygote,copy-on-write shared,省内存,省cpu,省电

3.基于寄存器的bytecode,省指令,省cpu,省电

4.Trace-based JIT,省cpu,省电,省内存

39.android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和

区别.

1.DOM解析

优点:

?XML树在内存中完整存储,因此可以直接修改其数据和结构。

?可以通过该解析器随时访问XML树中的任何一个节点。

?DOM解析器的API在使用上也相对比较简单。

缺点:

如果XML文档体积比较大时,将文档读入内存是非常消耗系统资源的。

使用场景:

DOM 是用与平台和语言无关的方式表示XML 文档的官方W3C 标准.DOM 是以层次结构组织的节点的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能进行任何工作.DOM是基于对象层次结构的。

2.SAX解析

优点:

SAX 对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现.

缺点:

用SAX方式进行XML解析时,需要顺序执行,所以很难访问到同一文档中的不同数据.此外,在基于该方式的解析编码过程也相对复杂.

使用场景:

对于含有数据量十分巨大,而又不用对文档的所有数据进行遍历或者分析的时候,使用该方法十分有效.该方法不用将整个文档读入内存,而只需读取到程序所需的文档标签处即可.

3.xmlpull解析

android SDK提供了xmlpull api,xmlpull和sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此xmlpull和sax都比较节约内存资源,不会象dom 那样要把所有节点以对橡树的形式展现在内存中。xmlpull比sax更简明,而且不需要扫描完整个流。

40.Android系统中GC什么情况下会出现内存泄露呢?

出现情况:

1.数据库的cursor没有关闭

2.构造adapter时,没有使用缓存contentview

衍生listview的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程。

3.Bitmap对象不使用时采用recycle()释放内存

4.activity中的对象的生命周期大于activity

调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]

41.谈谈对Android NDK的理解

NDK 全称: Native Development Kit

误解

误解一:NDK 发布之前, Android 不支持进行C 开发

在Google 中搜索“NDK”,很多“Android 终于可以使用C++ 开发” 之类的标题,这是一种对Android 平台编程方式的误解。其实, Android 平台从诞生起,就已经支持C/C++ 开发。众所周知,Android 的SDK 基于Java 实现,这意味着基于Android SDK 进行开发的第三方应用都必须使用Java 语言。但这并不等同于“ 第三方应用只能使用Java”。在Android SDK 首次发布时,Google 就宣称其虚拟机Dalvik 支持JNI 编程方式,也就是第三方应用完全可以通过JNI 调用自己的C 动态库,即在Android 平台上,“Java+C” 的编程方式是一直都可以实现的。

当然这种误解的产生是有根源的:在Android SDK 文档里,找不到任何JNI 方面的帮助。即使第三方应用开发者使用JNI 完成了自己的C 动态链接库(so )开发,但是so 如何和应用程序一起打包成apk 并发布?这里面也存在技术障碍。我曾经花了不少时间,安装交叉编译器创建so ,并通过asset (资源)方式,实现捆绑so 发布。但这种方式只能属于取巧的方式,并非官方支持。所以,,在NDK 出来之前,我们将“Java+C” 的开发模式称之为灰色模式,即官方既不声明“ 支持这种方式”,也不声明“ 不支持这种方式”。

误解二:有了NDK ,我们可以使用纯C 开发Android 应用

Android SDK采用Java 语言发布,把众多的C 开发人员排除在第三方应用开发外(注意:我们所有讨论都是基于“ 第三方应用开发”,Android 系统基于Linux,系统级别的开发肯定是支持 C 语言的。)。NDK 的发布,许多人会误以为,类似于Symbian、WM,在Android 平台上终于可以使用纯C/C++ 开发第三方应用了!其实不然, NDK 文档明确说明:it is not a good way。因为NDK 并没有提供各种系统事件处理支持,也没有提供应用程序生命周期维护。此外,在本次发布的NDK 中,应用程序UI 方面的API 也没有提供。至少目前来说,使用纯C/C++ 开发一个完整应用的条件还不完备。

1.NDK 是一系列工具的集合

NDK提供了一系列的工具,帮助开发者快速开发C (或C++ )的动态库,并能自动将so 和java 应用一起打包成apk。这些工具对开发者的帮助是巨大的。

NDK集成了交叉编译器,并提供了相应的mk 文件隔离CPU平台、ABI 等差异,开发人员只需要简单修改mk 文件(指出“ 哪些文件需要编译”、“ 编译特性要求” 等),就可以创建出NDK可以自动地将so 和Java 应用一起打包,极大地减轻了开发人员的打包工作。

2.NDK 提供了一份稳定.功能有限的API 头文件声明

Google明确声明该API 是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK 中看出,这些API 支持的功能非常有限,包含有:C 标准库(libc )、标准数学库(libm )、压缩库(libz )、Log 库(liblog )。

3.NDK 带来什么

1)NDK 的发布,使“Java+C” 的开发方式终于转正,成为官方支持的开发方式。

?使用NDK,我们可以将要求高性能的应用逻辑使用C 开发,从而提高应用程序的执行效率。

?使用NDK,我们可以将需要保密的应用逻辑使用C 开发。毕竟,Java 包都是可以反编译的。

?NDK促使专业so 组件商的出现。(乐观猜想,要视乎Android 用户的数量)

2)NDK 将是Android 平台支持C 开发的开端。NDK提供了的开发工具集合,使开发人员可以便捷地开发、发布C 组件。同时,Google承诺在NDK 后续版本中提高“ 可调式” 能力,即提供远程的gdb 工具,使我们可以便捷地调试C 源码。在支持Android 平台C 开发,我们能感觉到Google 花费了很大精力,我们有理由憧憬“C 组件支持” 只是Google Android 平台上C 开发的开端。毕竟,C 程序员仍然是码农阵营中的绝对主力,将这部分人排除在Android 应用开发之外,显然是不利于Android 平台繁荣昌盛的。

Android工程师笔试题及答案(汇编)

Android工程师面试题 一、基础(79分) 1. String s = new String("xyz");创建了几个String Object? ( )3分 A、1个 B、2个 C、3个 D、4个 2. Math.round(11.5)和Math.round(-11.5)分别等于多少?()2分 A、11和-11 B、12和-11 C、11和-12 D、12和-12 3.以下错误的说法有:( )2分 A、只要设计合理,当出现error这样的情况时,程序完全可以自动处理 B、exception 表示一种设计或实现问题 C、Set和Map都继承自Collection接口 D、接口可以继承接口 E、抽象类可以继承没有构造函数的实体类 4. 以下哪种类型不能作为switch(expr1)表达式的expr1?( )3分 A、int B、long C、char D、byte 5. 有关ArrayList和Vector的说法,那些是错误的?( )3分 A、Vector是线程安全的 B、ArrayList是线程序不安全的 C、当需要增长时,Vector默认增长为原来一培 D、当需要增长时, ArrayList默认增长为原来一培 6. 以下说法那些是错误的?()3分 A、一个char型变量可以存储一个中文汉字 B、String是最基本的数据类型 C、Integer的缺省值是0 D、String类提供了数值不可改变的字符串 7.请指出以下代码的执行结果()5分 class A{ static{ System.out.print("X"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello{ public static void main(String[] ars){

android笔试题及答案

单选题 中可以用来处理中警示,确认等对话框地是() .假设目录下有文件结构,用()方法将该网页加载至 时,需传入地参数是() . . . . .下列不属于补间动画相关类地是() 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状态码表示请求完成地是() .关于说法错误地是:() 里可以通过设定转换时候地透明位 .在使用一个之前,不一定要调用方法 是设置资源被读入到这个地时候动画效果 是资源文件从这个里消失地时候要实现地动画效果 .建立蓝牙连接时通过方法来获取对象 () (); (); . () .关于地说法不正确地是( ) .它实现不同进程间通信地一种机制 .它避免了在新线程中刷新地操作 .它采用队列地方式来存储 .它实现不同线程间通信地一种机制

8.和地主要区别是(): . 内部基于链表,而是基于数组地 . 地大部分方法做了同步,而没有同步 . 是可串行化地,而不是 . 实现了,而没有 .下列属于解析文件地优点地是() .将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 .不用事先调入整个文档,占用资源少 .整个文档调入内存,浪费时间和空间 .不是长久驻留在内存,数据不是持久地,事件过后,若没有保存数据,数据就会消失""; ""; ""; 总共创建( )个对象. 多选题 .在添加第一个窗口小部件时,会执行地方法是() .下列属于优点地是() 与编程语言无关. 可以使用任何语言来完成是完全和厂商无关. 与平台无关 是简单地,可扩展地 3.下列属于解析需要用到地类和接口是() A. .在使用蓝牙必须获取地权限是() .< ""> .< "" > .< ""> .< ""> 5.类地重要方法()

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 stream 2.下列代码的执行结果是:(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,1 B、1,1.0 C、1.0,1 D、1.0,1.0

3.在继承中,关于构造方法的说明,下列说法错误的是(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”); else System.out.println(“Equal”); } } A、Not equal B、Equal C、无输出 D、编译出错 5.Java语言中字符串“学Java”所占的内存空间是(a) A. 6个字节 B. 7个字节

Android编程基础笔试题及答案2.0

《Android 编程基础》试卷A 注意事项: 1. 本试卷共8页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共35题,共61分) 1、 D03MA057(2分)退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a A 、onPause() B 、onCreate() C 、onResume() D 、onStart() 2、 D02MA058 (2分) Android 项目工程下面的 assets 目录的作用是什么 b A 、放置应用到的图片资源。 Res/drawable B 、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C 、放置字符串,颜色,数组等常量数据 res/values D 、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 3、 D04MA059 (2分)下列不属于android 布局的是(c) A 、F r a m e L a y o u t B 、L i n e a r L a y o u t C 、BorderLayout D 、T a b l e L a y o u t E 、R e l a t i v e L a y o u t 4、 D08MA2060 (2分)Intent 的作用的是 a A 、intent 是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据, B 、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切 换页面而消失 service C 、实现应用程序间的数据共享 contentprovider D 、处理一个应用程序整体性的工作 5、 D04EA1061(1分) 下列哪个是AbsoluteLayout 中特有的属性 b A,android:layout_height B,android:layout_x C,android:layout_above D,android:layout_toRightOf 6、 D07EA1062(1分)RatingBar 组件中不能用属性直接设置的是d A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩 7、 D 10EA1063(1分) 在手机开发中常用的数据库是_a__ A,sqlLite B,Oracle C,Sql Server D,Db23 8、 D14MA2064(2分) 关于BroadcastReceiver 的说法不正确的是_b_ A, 是用来接收广播Intent 的 密封线内不要答 题 学院班级姓名

android java笔试题(带大部分答案)

请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1.请写出输出结果 public class Test1 { public static void changeStr(String str){ str="welcome"; } public static void main(String[] args) { String str="1234"; changeStr(str); System.out.println(str); } } ___"1234"____________________________________________________ 2.请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo('A'); foo('B') && (i < 2); foo('C')) { i++; foo('D'); } } } _____ABDCBDCB___________________________________________________ 3.class A { protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 4.public class Outer{ public void someOuterMethod() { // Line 3

android笔试题及答案

单选题 中可以用来处理js中警示,确认等对话框的是(C) 2.假设assets目录下有文件结构html/,用loadUrl()方法将该网页加载至 webView 时,需传入的参数是(B) A. B. C. D. 3.下列不属于补间动画相关类的是(B) 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状 态码表示请求完成的是(D) 5.关于ImageSwitcher 说法错误的是:( B ) 里可以通过Alpha设定转换时候的透明位 B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法 是设置资源被读入到这个ImageSwitcher的时候动画效果 是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果 6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象 D. () 7.关于Handler的说法不正确的是( A ) A.它实现不同进程间通信的一种机制 B.它避免了在新线程中刷新UI的操作 C.它采用队列的方式来存储Message D.它实现不同线程间通信的一种机制 8.Vector和ArrayList的主要区别是(B): A. ArrayList内部基于链表,而Vector是基于数组的

B. Vector的大部分方法做了同步,而ArrayList没有同步 C. Vector是可串行化的,而ArrayList不是 D. Vector实现了RandomAccess,而ArrayList没有 9.下列属于SAX解析xml文件的优点的是(B ) A.将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 B.不用事先调入整个文档,占用资源少 C.整个文档调入内存,浪费时间和空间 D.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 a1="abc"; String a2="abc"; String a3="abcd"; 总共创建( A )个String对象。 多选题 1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD) 2.下列属于SOAP优点的是(ABCD) A,SOAP 与编程语言无关。SOAP 可以使用任何语言来完成 B,SOAP 是完全和厂商无关。 C,SOAP 与平台无关D,SOAP 是简单的,可扩展的 3.下列属于SAX解析XML需要用到的类和接口是(BCD) A.DocumentBuilder 4.在使用蓝牙必须获取的权限是(AD) 5.Chronometer类的重要方法(ABC) 简答题 1.oom是什么如何避免 当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException 也就是OOM 避免:

Android面试题整理

Android常用面试简答题 1、android 中得动画有哪几类,它们得特点与区别就是什 么? 参考答案: 有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产 生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。 2、请简述Handler得机制原理 参考答案: andriod 提供了 Handler 与 Looper 来满足线程间得通信。Handler 先进先出原则。 Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。 1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里 得 Message Queue(消息队列)。 2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。 3) Message Queue(消息队列):用来存放线程放入得消息。 4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。 3、说说mvc模式得原理,它在android中得运用 参考答案: MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分: 模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。 视图( View )对象:就是应用程序中负责生成用户界面得部分。也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显 示处理结果。 控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想 用用户触发得相关事件,交给 Model处理。 Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下 1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时 候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。

android面试题及答案

一选择题(可多选,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)

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层处理。 5.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 答:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法可以从中提取保存好的数据

Android Java面试笔试题

Android Java笔试题(带大部分答案) 请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1. 1. 请写出输出结果 public class Test1 { public static void changeStr(String str){ str=”welcome”; } public static void main(String[] args) { String str=”1234″; changeStr(str); System.out.println(str); } } ___”1234″____________________________________________________ 1. 2. 请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo(…A?); foo(…B?) && (i < 2); foo(…C?)) { i++; foo(…D?); } } } _____ABDCBDCB___________________________________________________ 1.class A {

protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 1.public class Outer{ public void someOuterMethod() { // Line 3 } public class Inner{} public static void main(String[] args) { Outer o = new Outer(); // Line 8 } } 下列哪一个对Inner类实例化的描述是正确的?D A.new Inner(); // At line 3 B.new Inner(); // At line 8 C.new o.Inner(); // At line 8 D.new Outer.Inner(); // At line 8//new Outer().new Inner() 1. 5. 下面这个程序正确吗? 如果不正确请说出哪里错误。 public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++;

Android开发笔试题.docx

Android 应用开发笔试 姓名 :_____________联系电话:_____________得分:_____________ 共100分,考试时间40 分钟 一、选择题(30题,每题 1.5 分,共45分 ) A 、输入流和输出流B、字节流和字符流C、节点流和处理流 D 、File stream E、 Pipe stream F、Random stream 2. 下列代码的执行结果是:() public class Test3{ public static void main(String args[]){ } G、 Filter stream } B、 A 、1,1B、 1,1.0 C、 1.0,1 D 、1.0,1.0盖。 3.在继承中,关于构造方法的说明,下列说法错误的是() C、子类无条件的继承父类的无参构造方法, D、子类可以引用父类中的有参构造方法,使用super 关键字, E、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, F、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为 ( ) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) else } } A 、 Not equal B、Equal C、无输出 D 、编译出错 5.Java语言中字符串“学Java ”所占的内存空间是() A. 6个字节 B. 7个字节 C. 10个字节 D. 11个字节 6.Java语言中 A. 1,2,4,4,4,8byte 、short、int、float、double、long B.1,2,48,8,8 C.1,1,4,4,8,8 D.1,2,4,4,8,8 分别是几个字节() 7. 关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(Stringargv[]){ } } A 、有错误,变量i 没有初始化。B、null C 、 1 D 、 0 8.下列哪些语句关于内存回收的说明是正确的? () A 、程序员必须创建一个线程来释放内存

android面试题关于ui四大主键

笔试一般都是java基础 Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语。 这里具体说一下android面试题目: 南京WSCX: 1、 Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法? 生命周期:oncreate onStart onStop onPause onResume onDestory OnPause onCreate onStart onstop onResume 2、 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放? B的Mediaplay.get(播放歌曲,播放时间)保存到intent A if(播放歌曲&&播放时间有值) { MediaPaly(ss,dd); } 3、 Service有哪些启动方法?有什么区别? Service的启动方法有onstartServivr onbindService Start方法是先调用oncreate onstart 但是如果最后不调用onstop方法那么就算是activity 呗回收了也还是会运行 但是bind 是先后调用oncreate onbind 如果不调用onstop放法那么在activity被回收的时候就会被关闭 4、 (音乐播放器)如何加载的音乐信息,如何改善其效率。 构造SimpleAdapter - ListView 5、 电话状态的监听,改变打电话界面(听说我改动的Phone源码就不再问了)。 6、 ListView如何提高其效率? 7、 还有一些都是在上面的基础上扩展的,跟具体项目有关,就不说了。 总结:他们只是问一问这些基础的知识,都是给外包公司招人,自己做不了主,也就是检验一下应聘人员懂不懂android。 南京SL: 1、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?2、 启动一个Activity有哪几种方法? Intent intent = new Intent(this,FirstActivity.class)

Android面试题带标准答案

Android面试题 下列哪些语句关于内存回收的说明是正确的? (b ) A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 下面异常是属于Runtime Exception的是(abcd)(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12 下列程序段的输出结果是:(b)?void complicatedexpression_r(){int x=20, y=30; boolean b; b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b);? } A、true B、false C、1 D、011.activity 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d) A、onPause() B、onCreate() C、 onResume() D、onStart() Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选) A、Serializable B、charsequence C、Parcelable D、Bundle android 中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 下列属于SAX解析xml文件的优点的是(b) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会 消失 下面的对自定style的方式正确的是(a) A、 <resources> ?<stylename="myStyle"> ? ?</style> B、<style name="myStyle"> ?<item name="android:layout_width">fill_parent</item>

Android面试题

Android面试题 1. 下列哪些语句关于内存回收的说明是正确的? (b ) A、程序员必须创建一个线程来释放内存 B、内存回收程序负责释放无用内存 C、内存回收程序允许程序员直接释放内存 D、内存回收程序可以在指定的时间释放内存对象 2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException 3. Math.round(11.5)等于多少(). Math.round(-11.5)等于多少(c). c A、11 ,-11 B、11 ,-12 C、12 ,-11 D、12 ,-12 4. 下列程序段的输出结果是:(b ) void complicatedexpression_r(){ int x=20, y=30; boolean b; b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60; System.out.println(b); } A、true B、false C、1 D、011.activity5. 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行(d) A、onPause() B、onCreate() C、 onResume() D、onStart() 6. Intent传递数据时,下列的数据类型哪些可以被传递(abcd)(多选) A、Serializable B、charsequence C、Parcelable D、Bundle 7. android中下列属于Intent的作用的是(c) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 8. 下列属于SAX解析xml文件的优点的是(b) A、将整个文档树在内存中,便于操作,支持删除,修改,重新排列等多种功能 B、不用事先调入整个文档,占用资源少 C、整个文档调入内存,浪费时间和空间 D、不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会 消失 9. 下面的对自定style的方式正确的是(a) A、

android笔试题及答案

单选题 1.WebView中可以用来处理js中警示,确认等对话框的是(C) A.WebSettings B.WebViewClient C.WebChromeClient D.WebViewChrome 2.假设assets目录下有文件结构html/hello.html,用loadUrl()方法将该网页加载至webView 时,需传入的参数是(B) A. file:///asset/html/hello.html B.file:///android_asset/html/hello.html C.file:///androidasset/hello.html D.file:///assets/html/hello.html 3.下列不属于补间动画相关类的是(B) A.TranslateAnimation B.FrameAnimation C.RotateAnimation D.AlphaAnimation 4.Android中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状态码表示请求完成的是(D) A.100 B.202 C.404 D.200 5.关于ImageSwitcher 说法错误的是:(B ) A.ImageSwitcher里可以通过Alpha设定转换时候的透明位 B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法 C.setInAnimation是设置资源被读入到这个ImageSwitcher的时候动画效果 D.setOutAnimation是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果 6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象 A.BluetoothAdapter.getBluetoothAdapterAdapter() B.BluetoothAdapter adapter=new BluetoothAdapter(); C.BluetoothAdapter.BluetoothAdapterAdapter(); D. BluetoothAdapter.getDefaultAdapter() 7.关于Handler的说法不正确的是( A ) A.它实现不同进程间通信的一种机制 B.它避免了在新线程中刷新UI的操作 C.它采用队列的方式来存储Message D.它实现不同线程间通信的一种机制 8.Vector和ArrayList的主要区别是(B): A. ArrayList内部基于链表,而Vector是基于数组的

2016最新Android常见面试题

1.横竖屏切换时候activity 的生命周期 1). 不设置Activity 的android:configChanges 时, 切屏会重新调用各个生命周期, 切横屏时会执行一次, 切竖屏时会执行两次. 2). 设置Activity 的Android:configChanges=‖orientation‖ 时, 切屏还是会重新调用各个生命周期, 切横、竖屏时只会执行一次. 3). 设置Activity 的Android:configChanges=‖orientation|keyboardHidden‖ 时, 切屏不会重新调用各个生命周期, 只会执行onConfigurationChanged 方法 . 2.android 中的动画有哪几类,它们的特点和区别是什么? 两种,一种是Tween 动画、还有一种是Frame 动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化; 另一种Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 3. 一条最长的短信息约占多少byte? 中文70( 包括标点) ,英文160 ,160 个字节。 4.handler 机制的原理 andriod 提供了Handler 和Looper 来满足线程间的通信。Handler 先进先出原则。Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange) 。 1)Looper: 一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue( 消息队列) 。 2)Handler: 你可以构造Handler 对象来与Looper 沟通,以便push 新消息到Message Queue 里; 或者接收Looper 从Message Queue 取出) 所送来的消息。 3) Message Queue( 消息队列): 用来存放线程放入的消息。 4) 线程:UI thread 通常就是main thread ,而Android 启动程序时会替它建立一个Message Queue 。 5. 什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

Android面试题集合(含答案)

云时代 Android面试题集[键入文档副标题]

目录 第一章Android最全面试题71道题 (55) 一、选择题 (55) 二.填空和问答 (1212) 25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线 性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (1212) 26. android 的四大组件是__Activity Service BrodcastReceiver ContentProvier。1212 27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。 (1212) 28. android 中service的启动方法有:__startService____bindService_ (1212) 29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreate onStart onResume onPause onStop onDestroy onRestart (1212) 30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、 Contentprovider存储数据、网络存储数据 (1212) 31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity 数据,启动新 Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函 数是void onActivityResult(int requestCode,int resultCode,intent data)_。 (1313) 33.下面程序运行的结果是:______________。 (1313) 34. 在android中,请简述jni的调用过程。 (1414) 35. 简述Android的体系结构包括哪些? (1414) 36. 请继承SQLiteOpenHelper实现下述功能 (1414) 37. 页面上现有ProgressBar 控件progressBar,请用书写线程以10秒的的时间完成其进度显示工 作。 (1515) 38. 请描述Activity 的生命周期。 (1616) 39. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?1717 40. 如何将一个Activity 设置成对话框窗口的样式。 (1717) 41. 如何退出Activity?如何安全退出已调用多个Activity 的Application? (1717) 43. 请介绍下Android的数据存储方式。 (1919) 44. 请介绍下ContentProvider是如何实现数据共享的。 (1919) 45. 如何启用Service,如何停用Service。 (2020) 46. 注册广播接收器有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。 .......................................................................... 错误!未定义书签。错误!未定义书签。 47. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。错误!

相关主题