Android—Activity详解

来源:互联网 发布:老备案域名出售 编辑:程序博客网 时间:2024/06/17 17:05

注:如果文本出现不能自动换行现象,请将游览器调成兼容模式

概述

    Android应用中的最重要组件单位之一,是Android应用中负责与用户交互的组件,通俗来讲就是代表一个界面。

Activity的生命周期

  1. 四种状态

    运行状态:当前Acitivity位于前台,用户可见,可以获得焦点暂停状态:其他Acitivity位于前台,该Activity依然可见,只是不能得到焦点停止状态:该Acitivity不可见,失去焦点。销毁状态:该Acitivity结束,或Activity所在的进程被结束
  2. 生命周期回调方法

    onCreate():当Acitivity第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。onStart(): 该方法的触发表示所属Activity将被展现给用户,但不可交互。 onRestart(): 当处于停止状态的Activity需要再次展现给用户的时候,触发该方法。onResume(): 所属Activity变成可交互时回调此方法。onPause(): 当一个正在前台运行的Activity因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。onStop(): 当一个Activity不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop()方法。 所以保存状态信息是应该在onPause()时做,而不是onStop()时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。onDestroy(): 当活动销毁的时候,触发该方法。和onStop()方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。
  3. 操作Activity时状态流程
    启动一个Acitivity到运行状态中回调的方法

      onCreate()—OnStart()—onResume()

    运行状态到暂停状态回调的方法

      onPause()

    暂停状态到运行状态回调的方法

      onResume()

    运行状态到停止状态回调的方法

      onResume()—onPause()— onStop()

    停止状态到运行状态回调的方法

      onRestart()—onStart()— onResume()

    运行状态到结束这个Activity回调的方法

      onPause()—onStop()— onDestroy()

Activity的加载模式

  1. standard: 标准的加载模式,默认的加载模式。

        每次通过这种方式来启动一个Acitivity时,Android总会为目标创建一个新的实例,并将该Activity添加到当前的Task栈中。这种模式不会启动新的Task,新Activity将被添加到原有的Task中
  2. singleTop:Task栈顶的单例模式。

        当要创建的Activity不存在,Activity会创建一个新的Activity,并添加到Task栈顶中    当要创建的Activity存在,如果此Activity位于Task栈顶,此Activity不会创建一个新的实例,而是复用以这个Activity。    当要创建的Activity存在,如果此Activity不是位于Task栈顶,此Activity将会创建一个新的实例,并添加到Task栈中,之前创建的Activity还会有。
  3. singleTask:Task内的单例模式

        当要创建的Activity不存在,Activity会创建一个新的Activity,并添加到Task栈中    当要创建的Activity存在,如果此Activity位于Task栈顶,此Activity不会创建一个新的实例,而是复用以这个Activity。    当要创建的Activity存在,如果此Activity没有位于Task栈顶,那么系统将会将此Activity移除Task栈中,并将目标Activity转到Task栈顶,从而复用这个Activity。
  4. singleInstance: 全局单例模式

        当要创建的Activity不存在,系统会先创建一个新的Task栈,只用来存放此Task栈,在创建一个Activity实例,并将此Activity添加到新的Task栈中。    当要创建的Activity存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity的Task转到前台,从而使Activity显示出来。
1 0
原创粉丝点击