running/paused/stopped/killed
activity 处于活动状态。用户可以点击屏幕,并且做出响应,处于activity栈顶的状态。
paused activity失去焦点的时候,或者activity被非全屏activity占据,或者activity被透明的activity覆盖。
activity失去了和用户交互的能力,并不是activity被销毁,除非内存紧张。
stopped 当activity被完全覆盖,不再可见,内存状态信息,成员变量还在,
killed activity被系统回收掉了。
activity的生命周期
Activity启动->onCreate()->onStart()->onResume()
onCreate 这个方法是在activity被创建的时候回调,创建activity的时候重写该方法,用来做一些初始化操作,
onStart方法表明这时候activity正在启动,正在用户可见的状态,用户并不能交互,
onResume 交互
onPause 整个Activity处于停止状态,整个activity处于停止状态,
onStop 停止或者完全覆盖。
onRestart 处于不可见变为可见状态
进程优先级
前台/可见/服务/后台/空
当系统的内存不足时, android系统将根据进程优先级选择杀死一些不太重要的进程. 进程优先级从高到低分别为:
- 前台进程. 以下的进程为前台进程:
a. 进程中包含处于前台的正与用户交互的activity;
b. 进程中包含与前台activity绑定的service;
d. 进程中包含正在执行onCreate(), onStart(), 或onDestroy()方法的service;
e. 进程中包含正在执行onReceive()方法的BroadcastReceiver.
系统中前台进程的数量很少, 前台进程几乎不会被杀死. 只有当内存低到无法保证所有的前台进程同时运行时才会选择杀死某个前台进程.
- 可视进程. 以下进程为可视进程:
a. 进程中包含未处于前台但仍然可见的activity(调用了activity的onPause()方法, 但没有调用onStop()方法). 典型的情况是运行activity时弹出对话框, 此时的activity虽然不是前台activity, 但其仍然可见。
b. 进程中包含与可见activity绑定的service.
可视进程不会被系统杀死, 除非为了保证前台进程的运行而不得已为之.
服务进程. 进程中包含已启动的service.
后台进程. 进程中包含不可见的activity(onStop()方法调用后的activity). 后台进程不会直接影响用户体验, 为了保证前台进程/可视进程/服务进程的运行, 系统随时都有可能杀死一个后台进程. 一个正确的实现了生命周期方法的activity处于后台时被系统杀死, 可以在用户重新启动它时恢复之前的运行状态.
空进程. 不包含任何处于活动状态的进程是一个空进程. 系统经常杀死空进程, 这不会造成任何影响. 空进程存在的唯一理由是为了缓存一些启动数据, 以便下次可以更快的启动.
整个系统当中有且只有一个实例,并且独享任务栈
有生命周期,动态灵活的添加到activity内,必须依附activity内
1) 静态加载
将Fragment直接写入到Activity的布局当中,作为xml的标签
2) 动态加载
使用Fragment管理要启动的Fragment,并用FragmentTranslaton来添加和替换,并用容器资源作为标志位,最后提交。
FragmentPagerAdapter
它是通过detch 将activity的UI和Fragment的UI区分开来。他适合页面较少的情况
FragmentStatePageAdapter
他是用remove真正释放Fagment的内存。
onAttach() 是与Fragment关联的时候调用
onCreate 是在初次创建Fragment的时候调用
onCreateView 是在首次绘制界面的时候调用 返回Fragment 的跟视图
onViewCreate UI界面完全绘制好了
Oncreate
onActivityCreate activity被渲染绘制成功之后
on start
onresume
omPause
onstop
ondestoryView
onDestory
onDetach
Fragment 调用Activity的方法 getActivity
在Activity中调用Fragment中的方法 接口回调
在Fragment 中调用Fragment中的方法 findFragmentById
Service是什么?
Service是一种可以在后台执行长时间运行操作而没有用户界面的应用组件。运行在主线程,别做耗时操作,
Service和Thread的区别
Thread 程序执行的最小单元
Service 运行在主线程
activity很难对子线程进行控制。当activity被销毁后,很难对acitivity进行控制