1、面试问答题2、问答题 1. 说明使用操作栏为程序开发所带来的便利。答案:操作栏代替了传统的标题栏功能,右侧用来显示“选项菜单”的菜单项,但所显示的内容,会根据操作栏所具有的空间不同而具有不同的显示方式。在屏幕尺寸较小的设备上,操作栏会自动隐藏菜单项的文字,而仅现实菜单项的图标;而在屏幕尺寸较大的设备上,操作栏会同时现实菜单项的文字和图标。操作栏提供多个实用的功能,包括(1)将“选项菜单”的菜单项现实在操作栏的右侧;(2)基于Fragment实现类似于Tab页的导航切换功能;(3)为导航提供可“拖拽放置”的下拉列表;(4)可在操作栏上实现类似于“搜索框”的功能。2. 写出android中主要的三
2、种数据存储方式。答案一:数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络。答案二:常用的数据存储方式:SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。答案三:1.SharedPreferences 2.文件存储 3.SQLite数据库方式4.内容提供器(Contentprovider)5.网络存储方式3. 简述android中的适配器作用,android有哪些适配器?区别是什么?答案:作用:把一些数据给弄得适当,适合以便于在View上显示。我们常用的适配器一共有三个,ArrayAdapter,SimpleAdapt
3、er,SimpleCursorAdapter ,他们都是继承BaseAdapter其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。 4.说明线程的两种实现方式是什么?答案:第一种方式:使用Runnable接口创建线程。第二种方式:直接继承Thread类创建对象使用Runnable接口创建线程。 5.说明如何在不同的activity之间进行传值?答案:基本数据类型可以通过. Intent
4、 传递数据 extras.putDouble(key, value) intent.putExtra(name, value) / 通过intent putExtra 方法 基本数据类型 都传递 Bundle bundle = new Bundle(); bundle.putShort(key, value); intent.putExtras(bundle); intent.putExtras(bundle)获取到激活他的 getIntent(); Intent intent = getIntent(); Bundle bundle = intent.getExtras(); intent.
5、getStringExtra(“key”,”value”); intent.getBooleanExtra(“key”,”value”)6.什么是Activity?答案:Activity是Android组件中最基本也是最为常见用的四大组件之一。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Act
6、ivity之间通过Intent进行通信。7. 两个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作用答
7、案:Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。通过Intent 可以实现各种系统组件的调用与激活.10Intent传递数据时,可以传递哪些类型数据?答案:一般的基本数据类型 Intent .putextra() intent.getStringextra();数据的uri, intent.setData() intent.getData();11. Activit
8、y,intent、Service和BroadCastReceiver之间是什么关系?Activity、Intent、Service、BroadCastReceiver的概念(每个1.5分),一个应用程序怎么去利用他们(每个1分)12.android中常用的数据存储方式和怎样去实现这些存储方式答案:常用的数据存储方式:SharePreference存储、File存储(分为手机内存存储和SD卡存储)、SQLite数据库存储和网络存储。(每个1.5分)怎样去实现这些存储(每个1分)13. 简述Manifest.xml 文件?答案:AndroidManifest.xml 是每个android程序中必须
9、的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)14 .举例说明android:gravity与android:layout_gravity 的区别答案:LinearLayout 有两个非常相似的属性:android:gravity 与android:layout_
10、gravity。他们的区别在于:android:gravity 用于设置View 组件的对齐方式,而android:layout_gravity用于设置Container 组件的对齐方式。举个例子,我们可以通过设置android:gravity=center来让EditText 中的文字在EditText组件中居中显示;同时我们设置EditText 的android:layout_gravity=right来让EditText组件在LinearLayout 中居右显示。15.注册广播接收者两种方式是什么?答案:首先写一个类要继承BroadcastReceiver第一种:在清单文件中声明,添加a
11、ctionandroid:name=android.provider.Telephony.SMS_RECEIVED)二种使用代码进行注册如:IntentFilterfilter = newIntentFilter(android.provider.Telephony.SMS_RECEIVED);IncomingSMSReceiverreceiver = new IncomgSMSReceiver();registerReceiver(receiver.filter);16.请介绍下Android中常用的五种布局。答案:FrameLayout(框架布局),LinearLayout (线性布局),
12、AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)17.请介绍下Android的数据存储方式。一.SharedPreferences方式二.文件存储方式三.SQLite数据库方式四.内容提供器(Content provider)方式五. 网络存储方式18.如何启用Service,如何停用Service。答案:Context.startService()和Context.bindService服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个
13、方法都可以启动Service,但是它们的使用场合有所不同。1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。2.采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用star
14、tService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。 3.采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,。接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind(
15、)方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-onDestroy()方法19.android中的动画有哪几类,它们的特点和区别是什么?答案:两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。20.谈谈UI中, Padding和Margin有什么区别?答案:Padding 文字对边框, margin是控件与控件之间的
16、距离。21. Adapter的作用是什么?常见的Adapter有哪些?(见3)答案:Apapter使数据绑定到控件变得更加简单和灵活,为容器提供子视图,利用视图的数据和元数据来构建每个子视图。常见有arrayAdapter,simpleCursorAdapter,cursorAdapter,resourceCursorAdapter 22.android四大组件是什么,各有有什么作用答案一:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。service:
17、后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口。Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径。BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。答案二:Act
18、ivity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,用于提示用户程序已经正常启动。Service一般用于没有用户界面,但需要长时间在后台运行的应用。BroadcaseReceiver是用来接受并响应广播消息的组件。ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。23.android中常用的四个布局有哪些?答案:五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局
19、),RelativeLayout(相对布局),TableLayout(表格布局)24android 的四大组件是什么? 答案:Activity、Service、BroadcastReceiver、ContentProvider25.android 中service的实现方法是:startservice和bindservice。26.activity一般会重载7个方法用来维护其生命周期,分别是什么(至少写5个)?答案:onCreate() ,onStart() ,onDestory() 、onRestart() ,onResume() ,onPause() ,onStop()27.android
20、的数据存储的方式有哪些?(见2)28.简述在嵌入式系统中使用SQlite数据库的优势。29 程序运行的结果是:_good and gbc_。 public class Example String str=new String(good); charch=a,b,c; public static void main(String args) Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+ and ); Sytem.out.print(ex.ch); public void change(St
21、ring str,char ch) str=test ok; ch0=g; 30.简述Service的用途?(见22)31.简述android系统三种菜单的特点及使用方式?答案:Android系统支持的三种菜单分别是:选项菜单、子菜单和快捷菜单。 (1)选项菜单是常用的Android系统菜单,可分为图标菜单和扩展菜单,图标菜单的子项最多是六个,支持显示图标,不支持单选框和复选框;而当子项多余六个时,采用扩展菜单,扩展菜单的子项是垂直排列,支持单选框和复选框,不支持显示图标。第一次启动选项菜单时,只需要调用一次onCreateMenu函数。 (2)子菜单的表现形式是浮动窗体的形式,适应小屏幕的显
22、示形式,能够展示更加详细的信息,通过addSubMenu函数增加子菜单,但不支持嵌套。在选项菜单和快捷菜单中使用子菜单,便于显示和分类相似的菜单子项。 (3)快捷菜单采用动窗体的显示形式,启动方式特别,点击界面元素超过2秒后,则启动该界面元素的快捷菜单。每次启动快捷菜单时,都要调用一次onCreateMenu函数。32简述Intent的定义和用途? 答案:Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。Intent的一个
23、最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。33.android 中service的实现方法是:startservice和bindservice。34. 当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行的回调函数是?35.Socket通信服务端编程步骤?答案:1.创建一个ServerSocket,用于监听客户端Socket 的连接请求。2.采用循环不断接受来自客户端的请求。3.每当接受到客户端Socket
24、的请求,服务器端也对应产生一个Socket36. Socket通信客户端编程步骤答案:客户端编程步骤:1、创建客户端套接字(指定服务器端IP 地址与端口号)。2、连接(Android 创建Socket 时会自动连接)。3、与服务器端进行通信。4、关闭套接字。37.AsyncTask的作用答案:费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。因此android 提供了一个工具类AsyncTask,顾名思义异步执行任务。这个AsyncTask 生来就是处理一些后台的比较耗时的任务,给用户带来良好用户体验的,从编程的语法上显得优雅了许多,不再需要子线程
25、和Handler就可以完成异步操作并且刷新用户界面。38.两种广播注册类型的区别是什么?答案:1)第一种是常驻型(静态注册),也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。2)第二种不是常驻型广播(动态注册),也就是说广播跟随程序的生命周期。注册的方法有两种,一种是静态注册,一种是动态注册。动态注册优点:在Android 的广播机制中,动态注册的优先级是要高于静态注册优先级的,因此在必要的情况下,我们是需要动态注册广播接收器的。静态注册优点:动态注册广播接收器还有一个特点,就是当用来注册的Activity 关掉后,广播也就失效了。同时反映了静态注册的一个优势,就是无需
26、担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器就是打开着的。39.Android中为什么要引入Handler?答案:在开发Android 移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI 线程会出现错误。因此android 提供了一个类Handler 来在子线程中来更新UI 线程,用发消息的机制更新UI 界面,呈现给用户。这样就解决了子线程更新UI 的问题。 40. Adapter的作用是什么?常见的Adapter有哪些?AndroidMa
27、nifest.xml文件中主要有哪些信息?答案:它指定了该应用程序的Java包:该包名作为应用程序的一个独特标识。它描述了应用程序组件:该应用程序由哪些activity,service,broadcast receiver和content provider组成。它指定了实现每个组件的类以及公开发布它们的能力(例如,它们能持有哪个Intent信息)。这些声明使Android系统知道这 儿有什么组件以及在什么条件下它们可以被载入。它决定那些进程将容纳应用程序组件。它声明了本应用程序必须拥有哪些许可,以便访问API的被保护部分,以及与其他应用程序交互。它也声明了其他应用程序在和该应用程序交互时需要持
28、有的许可。它列出了Instrumentation类,可以在应用程序运行时提供简档和其他信息。这些声明仅当应用程序在开发和测试过程中被提供;它们将在应用程序正式发布之前被移除。它声明了该应用程序所需的Android API的最小化水平。它列出了该应用程序必须链接的库。启动一个线程使用run()还是start()?答案:启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它
29、调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体。41. 你如何评价Android系统?优缺点(总共写出5条即可)。Android 平台手机5大优势:一、开放性二、挣脱运营商的束缚三、丰富的硬件选择四、不受任何限制的开发商五、无缝结合的Google 应用再说Android 的5大不足:一、安全和隐私二、首先开卖Android 手机的不是最大运营商三、运营商仍然能够影响到Android 手机四、同类机型用户减少五、过分依赖开发商缺少标准配置42如何将SQLite数据库(dictionary.db文件)与apk文件一起发布? 解答:可以将dictionary
30、.db文件复制到Eclipse Android工程中的res raw目录中。所有在res raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res raw目录中43. 如何将打开res raw目录中的数据库文件? 解答:在Android中不能直接打开res raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res raw目录中资源的 InputStream对象,然后将该InputStre
31、am对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。44. activity一般会重载7个方法用来维护其生命周期,分别是什么(至少写5个)?(见上)45.请介绍下Android中常用的五种布局。答案:FrameLayout(帧布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。46.通过startService()和bindService()启动service,service的生命周期上有哪些不同? 答案:通过startService()启动服务:会调用如下生命周期方法: onCreate()-onStart()-onDestory() 如果是调用bindService()启动服务:会调用如下生命周期方法: onCreate()-o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1