首先,Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。

在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE
中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我就先来介
绍一下MVC在Android开发中的应用:

M(Model
模型):Model是应用程序的主体部分,所有的业务逻辑都应该写在这里,在Android中Model层与JavaEE中的变化不大,如:对数据库的操
作,对网络等的操作都放在该层(但不是说它们都放在同一个包中,可以分开放,但它们统称为Model层)。
       V(View
视图):是应用程序中负责生成用户界面的部分,也是在整个MVC架构中用户唯一可以看到的一层,接收用户输入,显示处理结果;在Android应用中一般
采用XML文件里德界面的描述,使用的时候可以非常方便的引入,当然也可以使用JavaScript+Html等方式作为View。
       C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中写太多的代码,尽量能过activity交割Model业务逻辑层处理。

好了,在介绍过Android应用开发中的MVC架构后,我们就可以很明确的知道,在Android中Activity主要是用来做控制的,它可以选择要
显示的View,也可以从View中获取数据然后把数据传给Model层进行处理,最后再来显示出处理结果。

介绍过Activity的主要作用后,那么我们就要详细说一下Activity了。
       要想了解Activity,那么就必须要清楚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();
}

onCreate(Bundle) 函数是你进行初始化的地方,这个也是执行
setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML
编制的UI界面,可以使UI和具体实现完全分离。
onPause()函数是处理用户离开当前 Activity 的地方。更重要的是,任何在当前
Activity中的任何改变都要在这个函数中提交。

Activity有四种状态:
       活动状态,当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就
处于activity或者运行状态。
       运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity
处于文档处于焦点状态,当前的Activity就处于pause。
       停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在
运行,但是用户却看不见。
       结束,当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这
是Activity就是处于结束状态了。
       处于结束状态的是Activity,如果要使用户可见,只要重启才可以。

Activity的响应时间
       当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。
       当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。

最新文章

  1. log4j - 配置文件
  2. NET Core+Code First+Docker
  3. Linux 下挂载硬盘的 方法
  4. 蓝牙4.0 BLE 开发
  5. Linux基本命令(开发常用的、电脑常用的)
  6. vs2013 MVC 无法确定要使用哪一版本的 ASP.NET Web Pages错误
  7. gustafson,Sun-Ni,Amdahl
  8. bug记录_signalr执行$.connnection.testhub结果为空
  9. Windows环境下google protobuf入门
  10. spring注解大全
  11. Web前端:博客美化:一、模板美化
  12. <Dare To Dream 团队>第一次作业:团队亮相
  13. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi (转)
  14. Scrollbar中滚动条的设置
  15. Jena 操作 RDF 文件
  16. 《计算机网络》谢希仁(第7版) 第四章 c语言http://c.biancheng.net/cpp/html/3137.html
  17. jenkins 配置。
  18. 3D跑马灯效果
  19. Numpy np.array 相关常用操作
  20. DOS磁盘操作类命令

热门文章

  1. tomcat 配置文件 介绍
  2. POJ_1195 Mobile phones 【二维树状数组】
  3. (转载)处理SQL解析失败导致share pool 的争用
  4. linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值
  5. Log4Net各参数API
  6. ArcEngine开发中“错误类型"****"未定义构造函数”
  7. jsp验证正则表达式
  8. HackerRank - common-child【DP】
  9. 理解盒模型——外边距、内边距和边框之间的关系,IE 8以下版本的浏览器中的盒模型有什么不同。
  10. for 循环与嵌套