安卓面试问答题.docx
- 文档编号:15757355
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:13
- 大小:22.16KB
安卓面试问答题.docx
《安卓面试问答题.docx》由会员分享,可在线阅读,更多相关《安卓面试问答题.docx(13页珍藏版)》请在冰点文库上搜索。
安卓面试问答题
2、问答题
1.说明使用操作栏为程序开发所带来的便利。
答案:
操作栏代替了传统的标题栏功能,右侧用来显示“选项菜单”的菜单项,但所显示的内容,会根据操作栏所具有的空间不同而具有不同的显示方式。
在屏幕尺寸较小的设备上,操作栏会自动隐藏菜单项的文字,而仅现实菜单项的图标;而在屏幕尺寸较大的设备上,操作栏会同时现实菜单项的文字和图标。
操作栏提供多个实用的功能,包括
(1)将“选项菜单”的菜单项现实在操作栏的右侧;
(2)基于Fragment实现类似于Tab页的导航切换功能;(3)为导航提供可“拖拽—放置”的下拉列表;(4)可在操作栏上实现类似于“搜索框”的功能。
2.写出android中主要的三种数据存储方式。
答案一:
数据存储方式有三种:
一个是文件,一个是数据库,另一个则是网络。
答案二:
常用的数据存储方式:
SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。
答案三:
2.文件存储数据库方式?
4.内容提供器(Content?
provider)5.?
网络存储方式
3.简述android中的适配器作用,android有哪些适配器区别是什么
答案:
作用:
把一些数据给弄得适当,适合以便于在View上显示。
我们常用的适配器一共有三个,ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,他们都是继承BaseAdapter
其中以ArrayAdapter最为简单,只能展示一行字。
SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。
4.说明线程的两种实现方式是什么
答案:
第一种方式:
使用Runnable接口创建线程。
第二种方式:
直接继承Thread类创建对象使用Runnable接口创建线程。
5.说明如何在不同的activity之间进行传值
答案:
基本数据类型可以通过.Intent传递数据
(key,value)
(name,value)
两个Activity之间跳转时必然会执行的是哪几个方法。
答案:
一般情况比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候,A会调用onPause()方法,然后B调用onCreate(),onStart(),OnResume(),这个时候B覆盖了窗体,A会调用onStop()方法.如果B呢是个透明的,或者是对话框的样式,就不会调用onStop()方法
8.怎么让在启动一个Activity是就启动一个service
答案:
在activity的onCreate()方法里面startService();
9.Intent作用
答案:
Android中通过Intent对象来表示一条消息,一个Intent对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封Email,其中不仅应该包含收件地址,还可以包含具体的内容。
对于一个Intent对象,消息“目的地”是必须的,而内容则是可选项。
通过Intent可以实现各种系统组件的调用与激活.
10.Intent传递数据时,可以传递哪些类型数据
答案:
一般的基本数据类型Intent.putextra()();
数据的uri,()();
11.Activity,intent、Service和BroadCastReceiver之间是什么关系
Activity、Intent、Service、BroadCastReceiver的概念(每个分),一个应用程序怎么去利用他们(每个1分)
中常用的数据存储方式和怎样去实现这些存储方式
答案:
常用的数据存储方式:
SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。
(每个分)怎样去实现这些存储(每个1分)
13.简述文件
答案:
是每个android程序中必须的文件。
它位于整个项目的根目录,描述了package中暴露的组件(activities,services,等等),他们各自的实现类,各种能被处理的数据和启动位置。
除了能声明程序中的Activities,ContentProviders,Services,和IntentReceivers,还能指定permissions和instrumentation(安全控制和测试)
14.举例说明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中居右显示。
15.注册广播接收者两种方式是什么
答案:
首先写一个类要继承BroadcastReceiver
第一种:
在清单文件中声明,添加
name=".IncomingSMSReceiver"> name="") 二种使用代码进行注册如: IntentFilterfilter=newIntentFilter(""); IncomingSMSReceiverreceiver=newIncomgSMSReceiver(); registerReceiver; 16.请介绍下Android中常用的五种布局。 答案: FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局) 17.请介绍下Android的数据存储方式。 一.SharedPreferences方式 二.文件存储方式 三.SQLite数据库方式 四.内容提供器(Contentprovider)方式 五.网络存储方式 18.如何启用Service,如何停用Service。 答案: ()和服务不能自己运行,需要通过调用()或()方法启动服务。 这两个方法都可以启动Service,但是它们的使用场合有所不同。 1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。 2.采用()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。 如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。 采用startService()方法启动的服务,只能调用()方法结束服务,服务结束时会调用onDestroy()方法。 3.采用()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。 这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,。 接着调用onDestroy()方法。 如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。 如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法 中的动画有哪几类,它们的特点和区别是什么 答案: 两种,一种是Tween动画、还有一种是Frame动画。 Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。 20.谈谈UI中,Padding和Margin有什么区别 答案: Padding文字对边框,margin是控件与控件之间的距离。 21.Adapter的作用是什么常见的Adapter有哪些(见3) 答案: Apapter使数据绑定到控件变得更加简单和灵活,为容器提供子视图,利用视图的数据和元数据来构建每个子视图。 常见有arrayAdapter,simpleCursorAdapter,cursorAdapter,resourceCursorAdapter 22.android四大组件是什么,各有有什么作用 答案一: Activity: Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。 service: 后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口。 ContentProvider: 是Android提供的第三方应用数据的访问方案,可以派生ContentProvider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径。 BroadCastReceiver: 接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。 答案二: Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,用于提示用户程序已经正常启动。 Service一般用于没有用户界面,但需要长时间在后台运行的应用。 BroadcaseReceiver是用来接受并响应广播消息的组件。 ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。 23.android中常用的四个布局有哪些 答案: 五种布局方式,分别是: FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局) 24.android的四大组件是什么 答案: Activity、Service、BroadcastReceiver、ContentProvider 25.android中service的实现方法是: startservice和bindservice。 26.activity一般会重载7个方法用来维护其生命周期,分别是什么(至少写5个) 答案: onCreate(),onStart(),onDestory()、onRestart(),onResume(),onPause(),onStop() 27.android的数据存储的方式有哪些(见2) 28.简述在嵌入式系统中使用SQlite数据库的优势。 29程序运行的结果是: ______goodandgbc_______。 publicclassExample{ Stringstr=newString("good"); char[]ch={'a','b','c'}; publicstaticvoidmain(Stringargs[]){ Exampleex=newExample(); ,; "and"); } publicvoidchange(Stringstr,charch[]){ str="testok"; ch[0]='g'; } } 30.简述Service的用途(见22) 31.简述android系统三种菜单的特点及使用方式 答案: Android系统支持的三种菜单分别是: 选项菜单、子菜单和快捷菜单。 (1)选项菜单是常用的Android系统菜单,可分为图标菜单和扩展菜单,图标菜单的子项最多是六个,支持显示图标,不支持单选框和复选框;而当子项多余六个时,采用扩展菜单,扩展菜单的子项是垂直排列,支持单选框和复选框,不支持显示图标。 第一次启动选项菜单时,只需要调用一次onCreateMenu函数。 (2)子菜单的表现形式是浮动窗体的形式,适应小屏幕的显示形式,能够展示更加详细的信息,通过addSubMenu函数增加子菜单,但不支持嵌套。 在选项菜单和快捷菜单中使用子菜单,便于显示和分类相似的菜单子项。 (3)快捷菜单采用动窗体的显示形式,启动方式特别,点击界面元素超过2秒后,则启动该界面元素的快捷菜单。 每次启动快捷菜单时,都要调用一次onCreateMenu函数。 32.简述Intent的定义和用途 答案: Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。 Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。 Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。 33.android中service的实现方法是: startservice和bindservice。 34.当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是 通信服务端编程步骤 答案: 1.创建一个ServerSocket,用于监听客户端Socket的连接请求。 2.采用循环不断接受来自客户端的请求。 3.每当接受到客户端Socket的请求,服务器端也对应产生一个Socket 36.Socket通信客户端编程步骤 答案: 客户端编程步骤: 1、创建客户端套接字(指定服务器端IP地址与端口号)。 2、连接(Android创建Socket时会自动连接)。 3、与服务器端进行通信。 4、关闭套接字。 的作用 答案: 费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。 因此android提供了一个工具类AsyncTask,顾名思义异步执行任务。 这个AsyncTask生来就是处理一些后台的比较耗时的任务,给用户带来良好用户体验的,从编程的语法上显得优雅了许多,不再需要子线程和Handler就可以完成异步操作并且刷新用户界面。 38.两种广播注册类型的区别是什么 答案: 1)第一种是常驻型(静态注册),也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。 2)第二种不是常驻型广播(动态注册),也就是说广播跟随程序的生命周期。 注册的方法有两种,一种是静态注册,一种是动态注册。 动态注册优点: 在Android的广播机制中,动态注册的优先级是要高于静态注册优先级的,因此在必要的情况下,我们是需要动态注册广播接收器的。 静态注册优点: 动态注册广播接收器还有一个特点,就是当用来注册的Activity关掉后,广播也就失效了。 同时反映了静态注册的一个优势,就是无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器就是打开着的。 39.Android中为什么要引入Handler 答案: 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。 但是在子线程中无法去操作主线程(UI线程),在子线程中操作UI线程会出现错误。 因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。 这样就解决了子线程更新UI的问题。 40.Adapter的作用是什么常见的Adapter有哪些 文件中主要有哪些信息 答案: 它指定了该应用程序的Java包: 该包名作为应用程序的一个独特标识。 它描述了应用程序组件: 该应用程序由哪些activity,service,broadcastreceiver和contentprovider组成。 它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。 这些声明使Android系统知道这儿有什么组件以及在什么条件下它们可以被载入。 它决定那些进程将容纳应用程序组件。 它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。 它也声明了其他应用程序在和该应用程序交互时需要持有的许可。 它列出了Instrumentation类,可以在应用程序运行时提供简档和其他信息。 这些声明仅当应用程序在开发和测试过程中被提供;它们将在应用程序正式发布之前被移除。 它声明了该应用程序所需的AndroidAPI的最小化水平。 它列出了该应用程序必须链接的库。 启动一个线程使用run()还是start() 答案: 启动线程肯定要用start()方法。 当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。 这并不意味着线程就会立即运行。 当cpu分配给它时间时,才开始执行run()方法(如果有的话)。 START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的.run()方法中包含的是线程的主体。 41.你如何评价Android系统优缺点(总共写出5条即可)。 Android平台手机5大优势: 一、开放性 二、挣脱运营商的束缚 三、丰富的硬件选择 四、不受任何限制的开发商 五、无缝结合的Google应用 再说Android的5大不足: 一、安全和隐私 二、首先开卖Android手机的不是最大运营商 三、运营商仍然能够影响到Android手机 四、同类机型用户减少 五、过分依赖开发商缺少标准配置 42.? 如何将SQLite数据库文件)与apk文件一起发布 解答: 可以将文件复制到EclipseAndroid工程中的resraw目录中。 所有在resraw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。 可以将文件复制到resraw目录中 43.如何将打开resraw目录中的数据库文件 解答: 在Android中不能直接打开resraw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。 复制的基本方法是使用getResources().openRawResource方法获得resraw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。 在AndroidSDK中可以使用方法来打开任意目录中的SQLite数据库文件。 44.activity一般会重载7个方法用来维护其生命周期,分别是什么(至少写5个)(见上) 45.请介绍下Android中常用的五种布局。 答案: FrameLayout(帧布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。 46.通过startService()和bindService()启动service,service的生命周期上有哪些不同 答案: 通过startService()启动服务: 会调用如下生命周期方法: onCreate()---->onStart()---->onDestory() 如果是调用bindService()启动服务: 会调用如下生命周期方法: onCreate()---->onBind---->onUnBind()---->onDestory() 不同点在于: 当采用startService()方法启动服务,访问者与服务之间是没有绑定在一起的,访问者退出,服务还在运行,而采用bindService()方法启动服务时,访问者与服务是绑定在一起的,即访问者退出,服务也就终止,解除绑定。 47.如何启用Service,如何停用Service 答案: Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 服务的开发比较简单,如下: 第一步: 继承Service类 publicclassSMSServiceextendsService{ } 第二步: 在文件中的 name=".SMSService"/> 服务不能自己运行,需要通过调用()或()方法启动服务。 这两个方法都可以启动Service,但是它们的使用场合有所不同。 使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。 采用startService()方法启动的服务,只能调用()方法结束服务,服务结束时会调用onDestroy()方法。 如果打算采用()方法启动服务如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。 48.服务常用的生命周期回调方法 答案: 服务常用生命周期回调方法如下: onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次。 startService()或bindService()方法,服务也只被创建一次。 onDestroy()该方法在服务被终止时调用。 49.sharedPreference存储数据的步骤 答案: 使用SharedPreferences存储数据;它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中。 只能在同一个包内使用,不能在不同的包之间使用。 中实现下拉列表的控件是哪个,获取下拉列表框的值的方法是什么处理下拉列表框被选择的事件是什么 答案: (1)一个activity呈现了一个用户可以操作的可视化用户界面 (2)());获取下拉列表框的值。 (3)事件: setOnItemSelectedListener(),处理下拉列表框被选择事
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面试 问答题