Android面试题
- 格式:pdf
- 大小:169.33 KB
- 文档页数:2
1.讲讲android中Activity的⽣生命周期及启动⽅方式
⽣生命周期:onCreate-onStart-onResume-onPause-onStop-onDestory
启动⽅方式: standard、singleTop、singleTask、singleInstance
2.讲讲android中Service的使⽤用
a.使⽤用场景:⺴⽹网络操作,播放⾳音乐,操作⽂文件I/O或者与内容提供者交互
b.两种启动⽅方式:“启动的”和“绑定”
c.两种启动⽅方式的区别及使⽤用⽅方式:
通过startService()启动的服务处于“启动的”状态,⼀一旦启动,service就在后台运⾏行,即使启动它的应⽤用组件已经被销毁了。
通常started状态的service执⾏行单任务并且不返回任何结果给启动者。
⽐比如当下载或上传⼀一个⽂文件,当这项操作完成时,service应该停⽌止它本⾝身。
还有⼀一种“绑定”状态的service,通过调⽤用bindService()来启动,⼀一个绑定的service提供⼀一个允许组件与service交互的接⼝口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。
绑定的service只有当应⽤用组件绑定后才能运⾏行,多个组件可以绑定⼀一个service,当调⽤用unbind()⽅方法时,这个service就会被销毁了。
3.ListView如何提⾼高其效率?
1.异步加载数据, 分⻚页加载数据,使⽤用 onscallLinster();
2.Static class ViewHolder
3. 使⽤用静态的view对象避免创建过多的view.
4. 把下载后的数据缓存到数据库⾥里
5. 客户端和服务器协同作战,⽐比如说客户端请求图⽚片的时候,先把⾃自⼰己的图⽚片数据和服务器⽐比对⼀一下,如果服务器图⽚片未更新,就拿缓存。
看客户端图⽚片的If-modify-since :属性就只掉最后修改时间,在⺴⽹网易新闻客户端就⽤用到了这个。
4.讲讲android中的性能控制<从管理内存、内存泄漏检测⼯工具、编码、布局优化上问>
管理内存:节制、地使⽤用Service、界⾯面不可⻅见时释放内存、内存紧张时释放内存、避免在Bitmap上浪费内存、使⽤用优化过的数据集合、使⽤用多个进程
内存泄漏处理:MAT、lint⼯工具
编码:静态优于抽象、对常量使⽤用static final修饰符、避免在内部调⽤用Getters/Setters⽅方法、避免创建不必要的对象
布局优化:使⽤用<include>、<merge>标签达到重⽤用布局⽂文件、使⽤用ViewStub达到仅在需要时才加载布局;
5.讲讲android中常⽤用的异步处理机制及区别
AsyncTask实现的原理和适⽤用的优缺点
原理:
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接⼝口反馈当前异步执⾏行的程度(可以通过接⼝口实现UI进度更新),最后反馈执⾏行的结果给UI主线程.
优点:
简单,快捷,过程可控
缺点:
在使⽤用多个异步操作和并需要进⾏行Ui变更时,就变得复杂起来.
Handler异步实现的原理和适⽤用的优缺点
原理:
在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(⼦子线程)运⾏行并⽣生成Message-Looper获取Message并传递给HandlerHandler 逐个获取Looper中的Message,并进⾏行UI变更。
优点:
结构清晰,功能定义明确
对于多个后台任务时,简单,清晰
缺点:
在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)。