1.Activity是什么
Activity是Android系统中的四大组件之一,在MVC模式中属于C控制层
M(Model 模型):Model是应用程序的主体对象。
V(View 视图):是应用程序中负责生成用户界面的部分,使用XML作为编程语言。
C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中写太多的代码,尽量能过activity交割Model业务逻辑层处理。
一个应用程序通常由多个Activities组成,他们通常是松耦合关系。通常,应用程序中第一个被展示的Activity被指定为"Main" Activity。每一个Activity然后可以启动另一个Activity。每一次一个Activity启动,前一个activity就停止了。当一个新Activity启动,它被推送到栈顶(压栈),取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前Activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的Activity恢复。
2.Activity的生命周期
Activity生命周期图
Activity 的生命周期中的系统回调函数。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
3.Activity的状态类型
Activity有四种状态:
活动状态(Activity):当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就处于activity或者运行状态。
运行但是失去焦点(Pause):当Activity还处于运行状态时,但是屏幕是有另外一个Activity处于文档处于焦点状态,当前的Activity就处于pause。
停止(Stop),当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在运行,但是用户却看不见。
结束(Destroy),当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这是Activity就是处于结束状态了。
4.Activity的响应时间
当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。
当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。