经过2个月的学习,对Android也有了个大概的了解,对已经学过的知识,可以按照四大组件和数据库技术来划分
1.首先是UI的学习,对Activity的了解,activity的生命周期方法,多种activity混合的生命周期方法,使用fragment对UI进行模块化优化;四种主要的布局模式:FrameLayout,RelativeLayout,LinearLayout,GridLayout。学会在xml中构建布局和各种UI组件:Viewpager,progressbar,textview,imageviwe等承载view的组件,
也学习了自定义view,学习了属性动画(属性与动画位置相关联),帧动画,补间动画(平移,缩放,旋转,淡入淡出)
2.Android中四中数据的存储方法:偏好设置(xml的键值对存储,存储设置);Sqlite(轻量型数据库),File(内存,外存),content Private(强力的数据获取能力)
3。service 优先级比后天程序要高,适合运行部分需要耗时执行的进程,不一定要在manifest中注册
4.广播broadcast 实现1对多的数据传输,需要在manifest文件中注册接受的广播类型
其他组件:intent(意图):实现跨进程的数据传输,分隐式意图与显示意图两中,隐式:调用intent的setAction()方法,其中部分常见的Action有:ACTION_CALL,ACTION_EDIT等
5.对android中多线程和消息模型的理解,异步任务对象的应用:
使用Thread类对象来直接新建一个工作线程,在run()方法中写工作代码,也可以直接继承runnable借口,在重写起run方法;
消息模型:利用handler对象来进行线程(主线程和工作线程之间的互传)之间的消息传递,handler需要绑定looperqueue,如果looperqueue是在工作线程创建的则hanlder工作在工作线程,handler可以传递和处理message对象,借助message对象的arg0,org,what属性进行数据的传递,也可以直接调用用Activity对象的runOnUiThread方法更新
异步任务对象AsyncTask:比较难的知识点,主要是线程池和handler对象的应用,asyncTask内置默认的线程池,只有一个核心线程,有20的looperqueue,最大线程为250,也可以自定义起核心线程数,队列长度,最大线程数。主要要重写doinbackground()方法和dopregress()方法
6.基本的数据结构:堆,栈,链表,数组,二叉树的优缺点分析
堆:类似一个杯子,后进先出,扩展容量很难
栈:经过排序的树形结构,是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便
链表: 链表是在非连续的内存单元中保存数据,并且通过指针将各个内存单元链接在一起,最有一个节点的指针指向 NULL ;
链表不需要提前分配固定大小存储空间,当需要存储数据的时候分配一块内存并将这块内存插入链表中。存储数据和删减数据比数组要方便,但是查找很困难,因为元素的指针只想前一个元素和后一个元素(双向链表),或者只指向前一个元素(单向链表),内存散落在各处,没有固定的内存
数组:最基础的存储方式:优点查找方便,有固定的内存,缺点,删除和定点插入十分困难,需要后面的元素移位
二叉树:查找和删改都很方便,但是算法十分复杂