• Android 核心组件 Activity 之下


    创建新的Activity的方式:

      1. 在相应的文件下 Ctrl + N  (Eclipse, Android中不知道是不是)

      2. 创建类,继承自Activity或者Activity的子孙类, 并在AndroidManifast.xml 中注册, 创建样式文件, 在setContentView()方法中调用这个样式文件

    激活一个新的Activity:

      Intent intent = new Intent(上下文对象, 被激活的对象的class);

      startActivity(intent); 

    当第二个Activity 激活时, 第一个Activity隐藏

      Activity_01.onPause()

      Acitvity_02.onCreate()

      Activity_02.onStart()

      Activity_02.onResume()

      Activity_01.onStop()

    Activity的启动模式:

       Activity的启动模式是通过在AndroidManifest.xml 中为<activity>节点添加android:launchMode属性进行配置的.

      取值有:

        standard: 标准的(默认),  每次激活该Activity都会重新创建新的实例.
          singleTop: 栈顶唯一, 即如果激活Activity时,该Activity位于栈顶, 则不会创建新的实例, 反之, 如果没有位于栈顶, 则会创建新的实例.

                当Activity位于栈顶时, 再次创建这个Activity只会执行这个步骤:  onPause()  --> onResume()

        singleTask: 任务栈内唯一, 即当激活Activity时, 如果任务栈中没有该Activity, 则创建新的实例, 并压栈, 如果该Activity已经存在于任务栈中,

                则不会创建新的实例. singleTask 的Activity 如果不在栈顶, 那么在激活它时, 在栈中位于它前面的Activity都会被销毁.

        singleInstance: 实例唯一, 即这个Activity独立占据一个任务栈, 且它的实例最多只可能存在一个. (getTaskId()  可以看到这个Activity在哪个任务栈中)

    任务栈(回退栈):

      1. Android为每个人物创建了一个栈来保存已经激活的Activity, 以至于当某个Activity被销毁时, 能继续显示当前一个Activity.

      2. 任务栈是一个先进后出,后进先出的栈结构.

      3. 新的Activity进入栈中 这个动作叫做 "压栈"; 一旦压栈,原先位于栈中的所有Activity都会向下移动, 新的Activity就占据栈顶位置,并位于前台显示.

      4. 当有栈中的Activity移除任务栈时, 称为"弹栈", 如果顶部的Activity弹栈. 就意味着这个Activity被销毁,移除任务栈,而下方的Activity就会向上弹起, 后续的某个Activity将获得栈顶位置.

    销毁Activity:

      1. 销毁单个Activity:  

         在Activity类中, 调用finish()方法, 即可销毁当前Activity. 该方法一般出现在激活其他Activity的代码之后

           销毁时流程:  onPause()  --> onStop()  --> onDestroy()

      2. 销毁多个/全部Activity:

        a. 确定哪些Activity需要被批量销毁

        b. 定义集合(List<Activity>)用于保存需要被销毁的Activity对象

        c. 在每个Activity的onCreate()方法中, 将该Activity添加到集合中

        d. 在每个Activity的onDestroy()方法中, 将该Activity从集合中移除

          e. 当需要批量销毁Activity时, 遍历集合, 依次调用finish()方法

    补充:

      1. Android 系统中进程的优先级

        a. Android 是基于Linux系统的, 内存的管理机制决定 当系统内存不够用时,系统会自动清除一些进程, 以释放更多的内存空间, 优先级越低越可能被清除.

        b. 进程的优先级(由高到低):

          1) 前台进程: 可见可控进程(当前你正在用的应用)  前台只有1个

          2) 可见进程: 可见不可控进程(被部分遮挡的应用)  可见进程0个

          3) 服务进程: 正在运行的Service组件的进程  我们一般讲进程提升到这个级别

          4) 后台进程: 不可见不可控的进程

          5) 空进程:  进程已经执行结束

    :  

      1. 不同的布局文件中id 是可以相同的

      2. hashCode()  可以查看实例的指针

      3. getTaskId()  可以看到这个Activity在哪个任务栈中

  • 相关阅读:
    $_SERVER
    下面介绍mysql中模糊查询的四种用法:
    qq第三方登录
    远程连接数据库出错
    lnmp中的tp的pathinfo模式
    TP5配置所谓的url_moudel
    tp3.2.3中的xss攻击基本防护
    tp中的Csv文件读取(原创)
    mysql语句整理
    SVN的详细使用
  • 原文地址:https://www.cnblogs.com/skjr/p/5812019.html
Copyright © 2020-2023  润新知