android面试题目及其答案.docx
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在另外的进程中执行