初识Activity

写在前面

Activity 是 Android 四大基本组件之一,可以通过 setContentView 方法绑定一个布局用于呈现界面与用户进行交互,是 Android 开发必不可少的内容

介绍

(翻译自Android develop doc:找到安装好的文档,打开
/Users/yourname/Library/Android/sdk/docs/guide/components/activities.html有对Activity的介绍)

Activity是一种应用程序组件,可以提供屏幕让用户可以进行交互,比如打电话、拍照、发邮件、或者浏览地图。每个activity都会提供一个窗口显示用户界面。通常窗口会充满屏幕,不过也会小于屏幕并且悬浮在其他窗口上面。
一个应用程序通常由多个Activity组成,他们松散地彼此绑定。其中一个Activity被称为“main”activity,当用户第一次启动app时显示。每个activity都可以启动另一个activity以完成不同的功能。一旦新的activity启动,之前的activity就会停止,但是系统会将之保留在一个栈(back stack)中。当新activity启动时,它会被推入back stack而且获得用户焦点。back stack遵循“先进后出”的原则,所以,当用户点击后退按钮结束当前activity时,它就会从栈中pop出来并销毁,并且之前的activity会重启。
当一个activity因为另一个activity启动而停止,它会通过activity的生命周期回调方法改变状态。一个activity可能接受到好几个回调函数,不论是创建、停止、重启、销毁,都会造成状态的改变,而且每一次回调都根据相应的状态改变提供机会调用特定的功能。比如,当activity停止时,activity应该释放一些占用内存大的对象,如网络或数据库连接。当activity重启时,你可以继续获取需要的资源和重启actions。这些状态的转变构成了activity的生命周期。

生命周期
初识Activity_第1张图片
Activity生命周期.png

为了测试生命周期方法的调用顺序,新建两个activity分别用A、B表示,其中A是mainActivity,在A中添加一个按钮,点击该按钮可以启动B activity。在各自的生命周期方法中打印日志,例如在A的onCreate方法中打印“onCreate--A”,以此类推。

  • 运行app:
    onCreate -- A、onStart -- A、onResume -- A
  • 点击home键回到桌面:
    onPause -- A、onStop -- A
  • 重新打开app:
    onRestart -- A、onStart -- A、onResume -- A
  • 点击A中的跳转按钮:
    onPause -- A、onCreate -- B、onStart -- B、onResume -- B、onStop -- A
  • 点击返回按钮:
    onPause -- B、onRestart -- A、onStart -- A、onResume -- A、onStop -- B、onDestroy -- B

调用顺序很容易理解:当启动另一个activity时,A会先pause,然后B开始显示,等B完全显示之后,A才会stop。同样在返回时,B会先pause,等A完全显示时,B会stop,进而destory

还有一种情况是,后来启动的B是一个dialog,只是作为一个窗口悬浮在A上面,B启动之后A还是可见的。这时的调用顺序会怎样呢?
在AndroidMainfest.xml文件中将B的标签改为:



  • 运行app:
    onCreate -- A、onStart -- A、onResume -- A
  • 点击A中的跳转按钮:
    onPause -- A、onCreate -- B、onStart -- B、onResume -- B
  • 点击返回按钮:
    onPause -- B、onResume -- A、onStop -- B、onDestroy -- B

可见,由于A在B显示之后仍然显示,所以并没有stop,返回时也不会调用restart和start

你可能感兴趣的:(初识Activity)