美文网首页
Android笔记之Activity

Android笔记之Activity

作者: 卖梦想的男孩 | 来源:发表于2017-03-01 11:37 被阅读10次

    Activity是Android中最直观的展现,也有称之为界面。
    一个正常的Activity需要满足:

    • 依附的窗口(必选)
      通常是继承自Activity,由父类来管理Activity,开发者只关心自己需要实现的效果
    • 清单的声明(必选)
      需要在AndroidManifest.xml中告诉系统存在某个Activity,这样当应用使用尝试使用某个Activity时,就可以轻易找到相应的类
    • 细节的过滤(可选)
      一个Activity告诉了系统自己的名字,但不是说任何人知道了自己的名字就可以随意访问自己,Android中采用IntentFilter来过滤哪些命令才是Activity自己关心的。

    生命周期

    扩展:Fragment作为3.0之后引入的一个概念,不属于四大组件,依附于Activity,一个Activity可以管理多个Fragment,这样就界面布局就可以做的更加灵活,每个小的模块只需要管理自己的部分就可以了。

    Activity Fragment 二者对应关系
    Activity的一生 Fragment的一生 二者的一生

    LaunchMode

    • Manifest文件中声明android:launchMode
    模式 描述
    standard 默认模式,每次启动Activity,就会创建一个新的Activity,然后push到任务栈中。
    singleTop 检查当前栈顶的Activity是不是要启动的Activity,如果是,则不会创建,如果不是,则同standard。
    singleTask 检查如果当前栈存在该Activity,则清除该栈以上的所有Activity,以此来达到显示该Activity到栈顶的目的,如果不存在,则同新起一个任务栈,将起放到栈底。
    singleInstance 该模式下的Activity会独享一个任务栈,(这个栈里只有这一个Activity,且在系统范围内共享该实例)即使多个应用启动这个Activity也都会共享着一个任务栈。

    注:singleTop,singleTask,singleInstance如果是已存在的Activity,会调用其onNewIntent方法。(standard模式会重新创建所以也不需要)
    配置方式:

    • Intent启动的时候添加Flag
    • FLAG_ACTIVITY_NEW_TASK
      类似 singleTask
    • FLAG_ACTIVITY_SINGLE_TOP
      类似 singleTop
    • FLAG_ACTIVITY_CLEAR_TOP
      FLAG_ACTIVITY_CLEAR_TOP 通常与FLAG_ACTIVITY_NEW_TASK 结合使用,找到其他任务中的现有 Activity,并将其放入可从中响应 Intent 的位置;如果指定 Activity 的启动模式为 "standard",则该 Activity 也会从堆栈中删除,并在其位置启动一个新实例,以便处理传入的 Intent。

    处理关联

    “关联”指示 Activity 优先属于哪个任务。默认情况下,同一应用中的所有 Activity 彼此关联。 因此,默认情况下,同一应用中的所有 Activity 优先位于相同任务中。
    在不同应用中定义的 Activity 可以共享关联,或者可为在同一应用中定义的 Activity 分配不同的任务关联。

    • taskAffinity
      系统使用报名标识应用的默认任务关联。
    • allowTaskReparenting
      用来标记一个Activity实例在当前应用退居后台后,是否能从启动它的那个task移动到有共同affinity的task,“true”表示可以移动,“false”表示它必须呆在当前应用的task中,默认值为false。

    清理返回栈

    如果用户长时间离开任务,则系统会清除所有 Activity 的任务,根任务除外。 当用户再次返回到任务时,仅恢复根 Activity。

    • alwaysRetainTaskState
      如果在任务的根 Activity 中将此属性设置为 "true",在很长一段时间后,任务仍将所有 Activity 保留在其堆栈中。
    • clearTaskOnLaunch
      如果在任务的根 Activity 中将此属性设置为 "true",则每当用户离开任务然后返回时,系统都会将堆栈清除到只剩下根 Activity。
    • finishOnTaskLaunch
      此属性类似于 clearTaskOnLaunch,但它对单个 Activity 起作用,而非整个任务。设置为 "true"时,Activity 仍是任务的一部分,但是仅限于当前会话。如果用户离开然后返回任务,则任务将不复存在。
    • noHistory
      具有此属性标识的Activity当导航到其他Activity上时,Activity栈将不记录。

    额外:
    关闭应用的方式

    • 调用清空应用的所有Activity
      Activity.finish
    • 杀死应用所在的进程
      killprocess(Process.mId)
    • 终止正在运行的虚拟机
      system.exit()

    参考:
    http://blog.csdn.net/card361401376/article/details/51542132
    http://blog.csdn.net/way_ping_li/article/details/8680359

    相关文章

      网友评论

          本文标题:Android笔记之Activity

          本文链接:https://www.haomeiwen.com/subject/jpkxgttx.html