来自个人百度空间的文章---2014.5.5
二、项目中的知识点
1、Activity 知识点
(1)生命周期 onCreate(创建时被调用) onStart(创建或者从后台回到前台需要) onRestart(从后台回到前台需要) onResume(创建或者从被覆盖,后台回到前台需要) onPause(被覆盖,锁屏时被调用) onStop(退出,进入另一个activity时被调用) onDestroy(退出被调用)
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
7.onSaveInstanceState:
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;
(2)在用户改变屏幕方向时,此方法会被调用;
(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。
onSaveInstanceState的调用顺序是在onPause之前。
8.onRestoreInstanceState:
(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;
(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。
onRestoreInstanceState的调用顺序是在onStart之后。
(2)启动方式
1、standard 模式:每次激活Activity时都会创建Activity,并放入任务栈中。
2、singleTop 模式:如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。
3、singleTask 模式:如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
4、singleInstance 模式:在一个新栈中创建该Activity实例,并让多个应用共享该栈中的该Activity实例。一旦此模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
(3)task
1、每个应用都有自己的task,是一个存放activity的队列
2、affinity可以起到标示task的作用。
3、这里涉及 Intent 的flag知识点和<activity>task相关的属性。
FLAG_ACTIVITY_NEW_TASK 根据affinity找宿主task
FLAG_ACTIVITY_CLEAR_TOP 如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶。这个在standard启动模式很有用
FLAG_ACTIVITY_SINGLE_TOP 类似singletop启动模式
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
android:allowTaskReparenting 是否移动到共有的task
android:alwaysRetainTaskState 是否保持task状态,默认情况下应用在后台待够30分钟后,系统会清空除根activity之外的其他activity
android:clearTaskOnLaunch
android:finishOnTaskLaunch
2、Fragment
Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity,有删除,添加,修改的功能。
1、Fragment的生命周期 onAttach(被绑定到activity时) onCreate() onCreateView(创建和fragment关联的view hierarchy时) onActivityCreated(当activity的onCreate返回时) onStart() onResume() onPause() onStop() onDestroyView(当和fragment关联的view hierarchy被移除时) onDestroy() onDetach(被解除关联时)
2、设计哲学 ---模块化 使代码耦合性降低,结构分明。
3、Fragment分支下的好东西
DialogFragment (显示一个浮动的对话框)
ListFragment (显示一个由一个adapter管理的listview)
PreferenceFragment (显示一个选项列表)
4、可以添加到ActionBar中
3、 布局
线性布局(分横纵布局)
绝对布局(可以精确定位view的位置)
相对布局(可以定义view之间的关系)
帧布局(view都放在0,0位置,上面的view遮盖下面的view)
表格布局(可以定义行列)
其他布局(listview,gridview,tabview)
4、Handler
解决一部分耗时不能在主线程中完成的任务,两点用途:
1、传递Message。用于接受子线程发送的数据,并用此数据配合主线程更新UI。(回来完成主线程能完成的任务)
2、传递Runnable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。(去子线程完成主不能完成的任务)
5、数据管理方式
1、SharedPreferences:是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据。
2、ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。
3、SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型。
4、File: 即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
6、ANR
在android上,如果你的应用程序有一段时间响应不移灵敏,系统会向用户提示“应用程序无响应”
7、动画
两种,一种是tween动画,一种是frame动画。
Tween:动画主要包括图片的放大缩小、旋转、透明度变化、移动等等操作。(使用AnimationUtils)
Frame:动画则简单得多了,就是把一张张的图片连续播放产生动画效果。(使用AnimationDrawable)
8、Android 系统结构
android系统架构分从下往上为Linux内核层、运行库、应用程序框架层和应用程序层。