android面试笔试常见面试题
来源:互联网 发布:淘宝客服公司图片 编辑:程序博客网 时间:2024/06/06 15:37
一.View事件分发机制
dispatchTouchEvent->onTouch(返回true,事件已被消费,不会继续往下执行。返回false)->onTouchEvent->onClick().
二.ViewGroup事件分发机制
(1) 事件从Activity.dispatchTouchEvent()开始传递,只要没有被停止或拦截,从最上层的View(ViewGroup)开始一直往下(子View)传递。子View可以通过onTouchEvent()对事件进行处理。
(2) 事件由父View(ViewGroup)传递给子View,ViewGroup可以通过onInterceptTouchEvent()对事件做拦截,停止其往下传递。
(3) 如果事件从上往下传递过程中一直没有被停止,且最底层子View没有消费事件,事件会反向往上传递,这时父View(ViewGroup)可以进行消费,如果还是没有被消费的话,最后会到Activity的onTouchEvent()函数。
(4) 如果View没有对ACTION_DOWN进行消费,之后的其他事件不会传递过来。
(5) OnTouchListener优先于onTouchEvent()对事件进行消费。
ACTION_DOWN事件会传到某个ViewGroup类的onInterceptTouchEvent,如果返回false,则DOWN事件继续向子ViewGroup类的onInterceptTouchEvent传递,如果子View不是ViewGroup类的控件,则传递给子View的onTouchEvent。
如果onInterceptTouchEvent返回了true,则DOWN事件传递给VIewGroup的onTouchEvent,不再继续传递,并且之后的后续事件也都传递给它的onTouchEvent。
如果某View的onTouchEvent返回了false,则DOWN事件继续向其父ViewGroup类的onTouchEvent传递;如果返回了true,则后续事件会直接传递给其onTouchEvent继续处理。(后续事件只会传递给对于必要事件ACTION_DOWN返回了true的onTouchEvent)
三.android三种子线程更新UI的区别(View.post,Handler.post,activity.RunOnUiThread)
四.ListView卡顿的原因与性能优化
如果listview需要显示的item很多,就要考虑分页加载。
convertView的复用
viewHolder的嵌套使用
itemView的布局尽量简单
监听滑动结束后开始加载数据,滑动期间不加载
大数据采用异步加载的方式
五.图片缓存原理
采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且也把它划到缓存的层次结构中。当根据url向网络拉取图片的时候,先从内存中找,如果内存中没有,再从缓存文件中查找,如果缓存文件中也没有,再从网络上通过http请求拉取图片。在键值对(key-value)中,这个图片缓存的key是图片url的hash值,value就是bitmap。所以,按照这个逻辑,只要一个url被下载过,其图片就被缓存起来了。
六.equles与==的区别
==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;
有的对象重写了自己的equels方法,只要只想等就返回true。包括interger,string,date
七.Android5.0和6.0的新特征
->6.0
1.锁屏下语音搜索
2.指纹识别
3.更完整的应用权限管理
4.Doze电量管理
5.Now on Tap功能
6.App Links
地址:http://www.cr173.com/html/70261_1.html
->5.0
1.全新Meterial Design设计风格
2.ok Google语言指令
3.face unlock面部解锁
4.全新通知中心设计
5.project volta电池续航改进计划
6.安全性
八.内存溢出和内存泄漏有什么区别?何时会产生内存泄漏?内存优化有哪些方法?
内存溢出通俗理解就是软件(应用)运行需要的内存,超出了它可用的最大内存。
内存泄漏就是我们对某一内存空间的使用,使用完成后没有释放。
内存优化:Android中容易内存溢出的部分,就是图片的加载,我们可以使用图片的压缩加上使用LruCache缓存的目的来控制图片所能够使用的内存。
还有对于比较耗资源的对象及时的关闭,例如Database Conn , 各种传感器 , Service 等等。
九.程序之间的亲和性的理解。
1、默认情况下一个应用的所有Activity都是具有相同的affinity,都是从application中继承,application的affinity默认就是manifest的包名。
2、affinity对Activity来说,就像是身份证一样,可以告诉所在的Task,自己属于其中的一员。
3、应用场合:
a:根据affinity重新为Activity选择合适的宿主Task;
b:与allowTaskReparenting属性配合;
c:启动Activity使用Intent设置了FLAG_ACTIVITY_NEW_TASK标记。
- android面试笔试常见面试题
- Android常见笔试&面试题
- 常见笔试面试题
- 数据库基础(面试常见题)笔试面试题
- 常见笔试面试题2
- java常见笔试面试题
- 数据库常见笔试面试题
- C++常见笔试面试题
- C++常见笔试面试题
- 操作系统常见笔试面试题
- 数据库常见笔试面试题
- 数据库常见笔试面试题
- 数据库常见笔试面试题
- 数据库常见笔试面试题
- java常见笔试面试题
- 数据库常见笔试面试题
- 【IT笔试面试题整理】笔试和面试中常见的智力题
- 【IT笔试面试题整理】笔试和面试中常见的智力题
- 2016广东省赛反省
- HTTP 幂等性
- platform-tools\adb.exe,start-server' failed -- run manually if necessary,adb启动失败,端口被占用
- myeclipse启动tomcat内存溢出java.lang.OutOfMemoryError
- [J2SE]s02e03.两个错误处理的例子(课后练习)
- android面试笔试常见面试题
- mac 包管理器安装mysql
- android 调用系统各种应用
- RC4加密算法及其scala实现
- iOS基础:深入理解Objective-c中@class的含义
- Spring中的ThreadPoolTaskExecutor
- Linux常用命令
- magento2插件开发(1):magento2 Hello World
- 论开源<3>---从公司企业的高度看开源