Android App components - Activities

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011391629/article/details/82389864

仅仅作为AndroidDeveloper的学习笔记

Introduction to Activities

Activities是Android四大组件之一,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。

在manifest.xml中的写法为:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

Activity Lifecycle

  • 整个生命周期(onCreate()-> onDestroy())
  • 可见生命周期(onStart()-> onStop())
  • 前台生命周期(onResume()-> onPause())

整个生命周期和前台生命周期很好理解,那么可见生命周期和前台生命周期有什么区别呢?因为屏幕上可以存在多个Activity,比如在一个Activity1中打开了一个对话框(这个对话框也是一个Activity,记为Activity2),此时用户既可以看到Activity1也可以看到Activity2,此时Activity2处于前台生命周期,Activity1处于可见生命周期。如下图所示,当点击START DIALOGACTIVITY按钮时,MainActivity会调用onPause()方法,而不是onStop()。

这里写图片描述

完整的生命周期示意图如下图所示:

这里写图片描述

Tasks and Back Stack

Android中的Activity是可以层叠的,没启动一个新的Activity,就会覆盖在原有的Activity之上,然后点击Back键会销毁最上面的Activity,下一个Activity就会重新显示出来。可以思考一下这种层叠的结构怎么实现?没错,就是栈,First in Last out,假设启动顺序为Activity1 -> Activity2 -> Activity3,那么栈中的结构是,Activity3在顶部,Activity1在底部。

When the user presses the Back button:
这里写图片描述

在Android中,是使用Task来管理Activity的,一个Task就是一个这样的栈结构,这个栈也被称为Back Stack。

launchMode:

扫描二维码关注公众号,回复: 3665629 查看本文章
  • standard(the default mode):每启动一个新的Activity,都会创建一个新的实例
  • singleTop:如果启动的Activity已经在栈顶,则不会再创建实例
  • singleTask:只要启动的Activity在栈里面,则不会再创建实例,并且这个Activity之上的所有Activity全部出栈,如果没有在栈里面,则创建实例
  • singleInstance:这种模式是为了不同的APP能共享Activity,启动的Activity会在一个单独的Back Stack中,这个Back Stack只有这一个Activity。

这里我画了一个示例图:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u011391629/article/details/82389864