Android 每日学习笔记
2014-06-18 10:13
204 查看
Android学习也挺久了,感觉遇到了瓶颈,功能开发基本没有问题,可是在几次面试的时候还是会被问到一些原理性的东西答不上来,所以决定每日搞懂一些Android常用的知识,当然应该更多的去关注原理性的东西,仅仅以此文章记录每日学习的知识要点,权当整理,积少成多。
2014-6-17
1、Android Handler机制和looper
2、Android 内存回收的五个等级:Empty 、Background 、Service 、Visible 、Foreground
/article/4823490.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的区别
这个暂时还没找到比较好的资料 /article/4924420.html
感觉主要还是json主要还是轻量级的,不知道对不对
20、开始看《Android 4.0网络编程详解》
21、AsyncTask异步4.0的区别
其实主要是3.0以前AsyncTask内部线程池做了限制,大小为5个,也就是同时最多只能运行5个后台线程,超过则等待。3.0以后对该类做了一些拓展,
主要是线程池的一些拓展。所以啊,线程池还是很重要的。另外对程序的设计也有一定的要求,并不是什么东西直接放异步就能解决了的。
2014-6-17
1、Android Handler机制和looper
2、Android 内存回收的五个等级:Empty 、Background 、Service 、Visible 、Foreground
/article/4823490.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的区别
这个暂时还没找到比较好的资料 /article/4924420.html
感觉主要还是json主要还是轻量级的,不知道对不对
20、开始看《Android 4.0网络编程详解》
21、AsyncTask异步4.0的区别
其实主要是3.0以前AsyncTask内部线程池做了限制,大小为5个,也就是同时最多只能运行5个后台线程,超过则等待。3.0以后对该类做了一些拓展,
主要是线程池的一些拓展。所以啊,线程池还是很重要的。另外对程序的设计也有一定的要求,并不是什么东西直接放异步就能解决了的。
相关文章推荐
- Android(OPhone) 学习笔记 - 资源的访问和配置
- Android IMF 学习笔记三
- android 学习笔记(一)
- Android(OPhone) 学习笔记 - 地图(1)
- Android(OPhone) 学习笔记 - SQLite
- Android(OPhone) 学习笔记 - SharedPreferences
- Android 学习笔记(一)——开发环境搭建
- Android(OPhone) 学习笔记 - Intent和Activity(2)
- Android(OPhone) 学习笔记 - 地图 (4)
- Android(OPhone) 学习笔记 - 菜单使用
- Android(OPhone) 学习笔记 - HelloWorld资源
- Android(OPhone) 学习笔记 - 搜索API的使用
- Android(OPhone) 学习笔记 - 代码基础
- Android(OPhone) 学习笔记 - Intent和Activity
- Android(OPhone) 学习笔记 - 布局
- Android(OPhone) 学习笔记 - OPhone 开发环境
- Android(OPhone) 学习笔记 - Home API 的使用
- Android IMF学习笔记二
- Android(OPhone) 学习笔记 - 地图(3)
- Android(OPhone) 学习笔记 - Intent和Activity(3)