美文网首页
Android 拾遗(一)Activity

Android 拾遗(一)Activity

作者: Aeatho | 来源:发表于2018-01-09 16:59 被阅读15次
    1. Activity 生命周期

      • Activity 的四种状态

        running / paused / stopped / killed
        
      • Activity 生命周期


        activity_lifecycle.png
        • Activity 启动 -> onCreate() -> onStart() -> onResume();

        • 点击 Home 键回到主界面(Activity 不可见:被一个 dialog 遮盖或者一个透明的 activity 覆盖时)-> OnPause() -> onStop();

        • 当再次回到原 Activity 时 -> onRestart() -> onStart() -> onResume();

        • 退出当前 Activity 时 -> onPause() -> onStop() -> onDestroy()

        onStart()时,Activity 已可见,只是不能交互。当 onResume 时,可交互。

      • Android 进程优先级

        • 前台进程

          1. 和当前 activity 正在交互的进程
          2. 和当前 activity 绑定的 Service
        • 可见进程

          可见但不能点击的 activity 里的进程

        • 服务进程

          在后台开启的一个 Service 服务

        • 后台进程

        • 空进程

    2. Android 任务栈


      diagram_backstack_singletask_multiactivity.png
    1. Activity 启动模式

      • "standard"(默认模式)
        默认。系统在启动 Activity 的任务中创建 Activity 的新实例并向其传送 Intent。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例。
      • "singleTop"(栈顶复用模式)
        如果当前任务的顶部已存在 Activity 的一个实例,则系统会通过调用该实例的 onNewIntent() 方法向其传送 Intent,而不是创建 Activity 的新实例。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例(但前提是位于返回栈顶部的 Activity 并不是 Activity 的现有实例)。
        例如,假设任务的返回栈包含根 Activity A 以及 Activity B、C 和位于顶部的 D(堆栈是 A-B-C-D;D 位于顶部)。收到针对 D 类 Activity 的 Intent。如果 D 具有默认的 "standard" 启动模式,则会启动该类的新实例,且堆栈会变成 A-B-C-D-D。但是,如果 D 的启动模式是 "singleTop",则 D 的现有实例会通过 onNewIntent() 接收 Intent,因为它位于堆栈的顶部;而堆栈仍为 A-B-C-D。但是,如果收到针对 B 类 Activity 的 Intent,则会向堆栈添加 B 的新实例,即便其启动模式为 "singleTop" 也是如此。
      • "singleTask"(栈内复用模式:单例模式)
        系统创建新任务栈并实例化位于新任务栈底部的 Activity。但是,如果该 Activity 的一个实例已存在于一个单独的任务栈中,则系统会通过调用现有实例的 onNewIntent() 方法向其传送 Intent,而不是创建新实例,并弹出之前在其之上的 activitys 。一次只能存在 Activity 的一个实例。

        注:尽管 Activity 在新任务中启动,但是用户按“返回”按钮仍会返回到前一个 Activity。
        * "singleInstance".
        与 "singleTask" 相同,只是系统不会将任何其他 Activity 启动到包含实例的任务中。该 Activity 始终是其任务唯一仅有的成员;由此 Activity 启动的任何 Activity 均在单独的任务中打开。

    2. Scheme 跳转协议
      scheme是android中的一种页面内跳转协议,tiao'z通过定义自己的 scheme 协议,可以非常方便的跳转APP 中的其他页面:

      • 服务器可以定制化告诉 APP 跳转到哪个页面;
      • 可以通过通知栏定制化跳转页面
      • 可以通过 H5页面跳转到Native 页面等

    相关文章

      网友评论

          本文标题:Android 拾遗(一)Activity

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