Android 每日学习笔记
来源:互联网 发布:移动网络电视无中央5台 编辑:程序博客网 时间:2024/05/16 12:57
Android学习也挺久了,感觉遇到了瓶颈,功能开发基本没有问题,可是在几次面试的时候还是会被问到一些原理性的东西答不上来,所以决定每日搞懂一些Android常用的知识,当然应该更多的去关注原理性的东西,仅仅以此文章记录每日学习的知识要点,权当整理,积少成多。
2014-6-17
1、Android Handler机制和looper
2、Android 内存回收的五个等级:Empty 、Background 、Service 、Visible 、Foreground
http://www.cnblogs.com/bastard/archive/2012/08/17/2644169.html
3、Android 触摸事件传递机制
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
4、java常用数据结构
Collection (最基本的集合接口,一个Collection代表一组Object,支持一个iterator()方法,返回一个迭代器)
|-List (有序的Collection,允许相同元素)
| |-LinkedList (基于链表实现,插入删除性能高,查找效率低,非同步)
| |-ArrayList (可变大小的数组,允许所有元素,包括null.非同步)
| |-Vector (类似于ArrayList,但为同步,在迭代时,另一个线程修改Vector会抛出异常)
| |-Stack (实现先进后出的堆栈,实现堆栈的基本操作:push、pop、peek、empty、search)
|
|-Set(不允许相同元素)
Map (提供key到value的映射)
|-Hashtable (key-value映射的哈希表,均为非空对象,同步)
|-HashMap (非同步,允许空对象)
|-WeakHashMap (HashMap的改进,key为弱引用)
5、排序:(有点儿多,只做简单的几个排序算法)
1、直接选择排序:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待
排序的数据元素排完,经过n-1趟比较,不稳定,具有O(1)额外的空间,时间复杂度为O(n2),交换时间复杂度为O(n)。
2、堆排序:
利用堆的数据结构设计,生成堆,比较交换、重新生成堆。最坏时间复杂度是O(nlong2n)。
3、冒泡排序:
时间复杂度O(n2)。
4、快速排序:
从待排的数据序列中任取一个数据作为分界值,所有比它小的放到左边,所有比它大的放到右边。递归。
5、直接插入排序:
将待排序的数据元素按其关键字值得大小插入到前面的有序序列中。
6、Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
7、Android中View绘制流程以及invalidate()等相关方法分析
2014-6-18
8、最近一直在看一本书《Java开发技术 在架构中体验设计模式和算法之美》,值得一看。
9、Android的动画:
1)补间动画:给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。(未改变对象的属性值,只能作用与View)
2)帧动画:通过一系列Drawable依次显示来模拟动画的效果。
3)属性动画:与补间动画类似,但是改变对象的属性值,可作用于任何对象。3.0引进
10、java的引用机制,以及java的几种引用类型:强引用、软引用、弱引用、虚引用。
1)引用是一种数据类型,保存了对象在内存中的地址
2)不同的引用可能指向同一个对象
还有一个有点儿纠结的问题,就是java的值传递。
2014-6-19
11、今天主要复习了一下数据库SQL查询语句
1)基本查询:运算符、as、like、Order By、
2)子查询:单值比较、多值(In、All、Some(或Any)、Exists)、
3)聚合函数:Avg()、Sum()、Min()、Max()、Count()、Group By、Having、Exists
4)连接查询,内连接、外连接(左、右、全)
5)视图
6)约束
2014-6-20
12、String、Stringbuffer、StringBuild
String 字符串常量,每次产生一个新的对象
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
13、线程安全的map http://www.cnblogs.com/lianghui66/archive/2013/08/19/3267452.html
Hashtable:线程安全,但不允许空,并直接锁住整个hash表
synchronizedMap:堆hashmap的相关方法做锁处理,但依旧存在线程安全问题
ConcurrentHashMap: 一次锁住一个桶,默认将hash表分为16个桶,也就是默认允许最多16个写线程同时访问hash表
14、广播
静态广播:xml注册,优先级低于动态广播
动态广播:java代码注册,只在程序运行过程中有效,需要取消注册
有序广播和无序广播
进程内本地广播:LocalBroadcastManager进程内通信(数据安全、防止伪造广播、高效)
15、fragment之间的通信
本来是想找fragment间直接通信的,可是查了一些资料发现都是fragment和acticity通信,也就是说fragment之间间接通信。其实这种方式拓展性更好。
另外多关注一下fragment的生命周期。
顺带遇到一个BUG,就了解了一下LayoutInflater和FragmentTransaction以及add、replace、addToBackStack
16、线程池 http://www.oschina.net/question/565065_86540
非常重要的一个知识点 顺带学习了一下队列BlockingQueue http://wsmajunfeng.iteye.com/blog/1629354
17、listView为什么滑动会卡
开始的时候很困惑面试官问的这个问题,因为其实我自己真没遇到过。后来在他的引导下,才知道他想问的是getView中处理convertView的问题。好吧。
其实这个滑动卡的话,主要原因还是getView中处理注意避免耗时操作,用异步去处理。如果网络数据的话,常规处理是分页加载。
18、图片做二级缓存
暂缓....
19、网络数据传输时,json和xml的区别
这个暂时还没找到比较好的资料 http://www.cnblogs.com/SanMaoSpace/p/3139186.html
感觉主要还是json主要还是轻量级的,不知道对不对
20、开始看《Android 4.0网络编程详解》
21、AsyncTask异步4.0的区别
其实主要是3.0以前AsyncTask内部线程池做了限制,大小为5个,也就是同时最多只能运行5个后台线程,超过则等待。3.0以后对该类做了一些拓展,
主要是线程池的一些拓展。所以啊,线程池还是很重要的。另外对程序的设计也有一定的要求,并不是什么东西直接放异步就能解决了的。
- Android 每日学习笔记
- 每日学习笔记
- 每日学习笔记(1)
- 每日学习笔记(2)
- 每日学习笔记(3)
- 每日学习笔记(4)
- 每日学习笔记(5)
- 每日学习笔记(12)
- 每日学习笔记(13)
- 每日学习笔记(14)
- 每日学习笔记(15)
- 每日学习笔记(17)
- 每日学习笔记(18)
- 每日学习笔记(19)
- 每日学习笔记(20)
- 每日学习笔记(21)
- 每日学习笔记(23)
- 每日学习笔记(23)
- 大家最担心的注会综合英语问题解决了~~~
- 电气控制系统中的各种接地分析 转
- 常见的个人博客系统有哪些?
- FineUI PK DWZ
- navicat for sqlite 下载免费
- Android 每日学习笔记
- Android内容提供者(ContentProvider)浅析(三)
- 解决Windows To Go常见的三大挑战
- 手写注册页面,并实现验证信息(AJAX,Jquery,正则表达式,密码强度验证)
- 【大话设计模式】—— 模板方法模式
- Java语言基础特性——第二部分
- jrtplib—VS2010下RTP开源协议库JRTPLIB3.9.1编译
- C++中extern “C”含义深层探索
- Eclipse 变量点击高亮显示以及自定义高亮显示颜色