蜜蜂职场文库 > 面试技巧 >

android面试题目及其答案

时间: 小龙 面试技巧

  android面试中,面试者想要有好的表现,那么面试前的准备很重要,你了解安卓面试题目吗?你会作答了吗?以下是小编帮你们整理的android面试题目及其答案,一起来学习啦。

  android面试题目及其答案篇一

  1、显式intent和隐式intent的区别是什么(Android)

  Intent定义:Intent是一种在不同组件之间传递的请求消息,是应用程序发出的请求和意图。作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。

  显式Intent定义:对于明确指出了目标组件名称的Intent,我们称之为显式Intent; 隐式Intent定义:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。 说明:Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。

  2、如何优化ListView

  1)如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view;

  2)给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果;

  3)如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。

  3、简述通过contentResolver获取ContentProvider内容的基本步骤

  1)得到ContentResolver类对象:ContentResolver cr = getContentResolver();

  2)定义要查询的字段String数组;

  3)使用cr.query();返回一个Cursor对象;

  4)使用while循环得到Cursor里面的内容。

  4、描述4 种 activity 的启动模式

  1)standard :系统的默认模式,一次跳转即会生成一个新的实例。假设有一个activity命名为MainActivity,执行语句:

  startActivity(new Intent(MainActivity.this, MainActivity.class))后,MainActivity将跳转到另外一个MainActivity,也就是现在的Task栈里面有MainActivity的两个实例。按返回键后你会发现仍然是在MainActivity(第一个)里面。

  2)singleTop:singleTop 跟standard 模式比较类似。如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。例:当MainActivity为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。

  3)singleTask: singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中,经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。

  4)singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。

  5、Android中如何访问自定义ContentProvider?

  通过ContentProvider的Uri访问开放的数据。

  1)ContenResolver对象通过Context提供的方法getContenResolver()来获得。

  2)ContenResolver提供了以下方法来操作:insert delete update query这些方法分别会调用ContenProvider中与之对应的方法并得到返回的结果。

  6、Android中的动画有哪几类,它们的特点和区别是什么?

  Android中动画可以分为两大类:帧动画、补间动画

  1)补间动画:你定义一个开始和结束,中间的部分由程序运算得到。主要有:旋转、平移、放缩和渐变;Alphaanimation(渐变型动画)、scaleAnimation(缩放型动画)、 TranslateAnimation(平移型动画)、 RotateAnimation(旋转型动画)、

  2)逐帧动画:Frame(把一连串的图片进行系列化连续播放,如同放电影的效果),它是通过播放一张一张图片来达到动画的效果。

  android面试题目及其答案篇二

  1. 什么是Activity?

  四大组件之一,一般一个用户交互界面对应一个activity

  setContentView() ,// 要显示的布局, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件.

  开发常用的的有FragmentActivitiy,ListActivity , PreferenceActivity ,TabAcitivty等„

  如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity.进度对话框的显示与销毁

  2. 请描述一下Activity 生命周期。

  生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.. 在这个过程中 会针对不同的生命阶段会调用不同的方法

  Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause

  其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;

  onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;

  这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢? 答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;

  如果被onDestroy了,则是调用onCreate方法。

  最后讲自己项目中的经验,比如说乐玩每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作 就放在onStart()的方法里面.这样保证每次用户看到的数据都是最新的.

  比如:多媒体播放, 播放来电话. onStop() 视频, 视频声音设置为0 , 记录视频播放的位置 mediaplayer.pause();

  onStart() 根据保存的状态恢复现场. mediaplayer.start();

  在读文档的时候 还发现 activity还有两个方法 onPostResume() 和 OnPostCreate()这两个生命周期的方法,不过开发的时候没有用到过.

  3. 两个Activity之间跳转时必然会执行的是哪几个方法。

  一般情况比如说有两个activity,分别叫A,B ,当在A里面激活B组件的时候, A 会调用 onPause()方法,然后B 调用onCreate() ,onStart(), OnResume() ,这个时候B覆盖了窗体, A会调用onStop()方法. 如果B呢 是个透明的,或者是对话框的样式, 就不会调用onStop()方法

  4. 横竖屏切换时候Activity的生命周期。

  这个生命周期跟清单文件里的配置有关系

  1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期 默认首先销毁当前activity,然后重新加载

  2、设置Activity的android:configChanges="orientation|keyboardHidden|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。游戏开发中, 屏幕的朝向都是写死的.

  android面试题目及其答案篇三

  1. 如何将一个Activity设置成窗口的样式。

  可以自定义一个activity的样式

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

  2. 你后台的Activity被系统 回收怎么办?如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

  除了在栈顶的activity,其他的activity都有可能在内存不足的时候被系统回收,一个activity越处于栈底,被回收的可能性越大.

  protected void onSaveInstanceState(Bundle outState) {

  super.onSaveInstanceState(outState);

  outState.putLong("id", 1234567890);

  }

  public void onCreate(Bundle savedInstanceState) {

  //判断 savedInstanceState是不是空.

  //如果不为空就取出来

  super.onCreate(savedInstanceState);

  }

  3. service是否在main thread中执行, service里面是否能执行耗时的操作?

  默认情况,如果没有显示的指定service所运行的进程, Service和activity是运行在当前app所在进程的main thread(UI主线程)里面

  service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件 )

  在子线程中执行 new Thread(){}.start();

  Thread.currentThread().getName();

  特殊情况 ,可以在清单文件配置 service 执行所在的进程 ,让service在另外的进程中执行

  
看了“android面试题目及其答案”的人还看过:

1.

2.

3.

4.

5.

50347