0%

Android四大组件(一) | Activity

Andorid四大组件(一) | Activity

使用Intent在活动之间穿梭

显式Intent
1
2
Itent intent = new (Context context , SecondActivity.class);
startActivity(intent);

第一个参数为 上下文,第二个参数为 想要启动的Activity 类名

隐式Intent

相比较于显式Intent ,隐式Intent要更加含蓄,不明确启动哪一个活动,而是我们指定一些抽象的 action 和 category ,由用户去选择去调用哪一种Activity,下面这个代码 并没有指明响应哪一个 category 就说明 启动默认的category

1
2
Intent intent = new Intent("com.littlestone.activitylifecircle.ACTION_START");
startActivity(intent);

如果想要添加 自定义的category

1
intent.addCategory("com.littlestone.activitylifecircle.MY_CATEGORY");

活动的生命周期

包括了:

  1. oncreate()

  2. onstart()

  3. onresume()

  4. onpause()

  5. onstop()

  6. ondestroy()

如图:

image-20210412200521693

需要注意的是,屏幕发生翻转会经过以下生命周期(相当于重走了一遍 生命周期)

一开始进入的时候:

  1. Oncreate
  2. onstart
  3. onresume
    屏幕翻转
  4. onpause
  5. onstop
  6. ondestroy
  7. oncreate
  8. onstart
  9. onresume

当由活动A 点击Button 跳转到 活动B时:活动A与活动B经历的生命周期

  1. A–>onCreate:

  2. A–>onStart:

  3. A–>onResume:

    点击跳转

  4. A–>onPause:

  5. B–>onCreate:

  6. B–>onStart:

  7. B–>onResume:

  8. A–>onStop:

    点击返回

  9. B–>onPause:

  10. A–>onRestart:

  11. A–>onStart:

  12. A–>onResume:

  13. B–>onStop:

  14. B–>onDestroy:

    再次点击返回

  15. A–>onPause:

  16. A–>onStop:

  17. A–>Destroy:

禁止屏幕反转
在 AndoridManifest 的 Activity 中 设置 android:screenOrientation=”portrait”

  1. portrait : 竖直模式
  2. landscape: 水平模式

活动的启动模式

需要再 AndroidManifest 的activity标签中 声明 launchMode

  1. standard

    standard 是活动的默认启动模型,在不显性的指定的情况下,都是这种模式。stacndard 模式中,不管返回栈中是否存在该Activity,都会创建这个Activity 并将其加入到返回栈中

    image-20210420152258189

  2. singleTop

    singletop是standard的改进版本,会判断栈顶是否为要启动的活动,

    • 如果是就不创建新的活动了,直接使用。
    • 如果栈顶不是要启动的活动,还需要再创建并加入到返回栈中
  3. singleTask

    singleTask是singletop的改进版本,会判断栈内是否存在要启动的活动

    • 如果存在,需要将该活动之间的活动 弹出栈,然后直接使用

    • 如果不存在,再创建,并加入到返回栈中

      image-20210420153032013

  4. singleInStance

    是Activity 启动模式中最难理解的一种,会将该Activity放置到一个新的返回栈中,以便其他APP调用

    image-20210420153710778


活动的最佳实践