美文网首页
初识Activity

初识Activity

作者: yaqiong | 来源:发表于2017-06-16 14:47 被阅读22次
写在前面

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生命周期.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的标签改为:

<activity android:name=".BActivity"
          android:theme="@style/Base.Theme.AppCompat.Dialog">
</activity>
  • 运行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

    官方解释 应用程序组件,提供用户与程序交互的界面Activity,Service,BroadcastReceive...

  • 初识Activity

    写在前面 Activity 是 Android 四大基本组件之一,可以通过 setContentView 方法绑定...

  • Activity初识

    Activity初识之生命周期 Activity生命周期有七个节点, onCreate( ): activity启...

  • Activity系列--初识Activity

    android四大组件 在介绍Activity之前,先唠叨唠叨android的四大组件,android的四大组件分...

  • Android--精通Activity

    初识Activity: 我们都知道android中有四大组件(Activity活动,Service服务,Conte...

  • Android开发四《View的工作原理》

    一、初识ViewRoot和DecorView Activity:Activity并不负责视图控制,它只是控制生命周...

  • Android Context源码解析

    初识Context 对于Android开发者来说,Activity应该是接触到最早的四大组件之一。Activity...

  • 【Android】初识Activity(一)

    1. 什么是Activity Activity是一个应用程序组件,它的主要功能是提供界面,用户可以用来交互为了完成...

  • Android-activity的生命周期

    一、初识Activity 在日常应用中Activity是与用户交互的接口,它提供了一个用户完成相关操作的窗口。当我...

  • 初识:Activity的启动模式

    Activity(界面)启动就会在任务栈中生成“它”的实例(简单理解就是把这个页面放到一个盒子里),用户每次按一下...

网友评论

      本文标题:初识Activity

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