• android开发之生命周期


    android开发之生命周期

    一:Activity的生命周期:

    • 这几天了了解了安卓Activity的生命周期,对于生命周期有了大概的理解;
    • 一个Activity的生命周期也就是Activity从生成到运行,到登入其他界面时暂停,再到到当其他界面生成时停止,或者重新进入界面重写启动,直到最后activity被销毁的一系列过程;总的来说Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态:

      1.当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态

      2.当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕),此时处于暂停状态

      3.当Activity被其他Activity完全遮挡,此时此Activity对用户不可见,此时处于停止状态

      4.当Activity由于人为或系统原因(如低内存等)被销毁,此时处于销毁状态;

      如图:
    • (A)activity开始的时候,会首先调用:Oncreat()>>>Onstart()>>>OnResume(),这时(A)activity的界面进入到我们的视线;activity开始运行;
    • 当跳转到另外一个(B)activity,也就是进入到另外一个界面时,(A)activity会调用OnPause()函数;进入暂停阶段,然后(B)activity又会像(A)activity开始一样,调用:Oncreat()>>>Onstart()>>>OnResume(),当(B)activity进入我们的视线时,开始运行时,(A)activity会调用Onstop()函数;处于停止状态;
    • 当我们按下返回菜单,进行返回操作时,(B)activity会调用OnPause()函数,进入暂停状态,然后(A)activity会调用: OnRestart()>Onstart()>OnResume()函数,然后(A)activity的界面会进入我们的界面,然后(B)activity调用Onstop()>>OnDestroy()函数,此时(B)activity被销毁;
    • 而当我们调用的是我们在界面上定义返回(A)activity的button按钮时,(B)activity同样会先进入暂停,也就是调用了OnPause()函数,但是(A)activity调用的是:Oncreat()>>>Onstart()>>>OnResume(),也就是说,重新生成了一个(A)activity,而不是回到原先创建的(A)activity里面;然后(B)activity调用Onstop()暂停,而不是销毁;
    • 所以按菜单的返回键和界面上定义的activity上面的返回按钮是不一样的;
    • 当(A)activity调转到一个显示为能话框模式的(C)activity中时;同样的(A)activity会调用OnPause()函数;进入暂停阶段,然后(C)activity会首先调用Oncreat()>>>Onstart()>>>OnResume(),这时(A)activity的界面进入到我们的视线;但是(A)activity并没有停止,也就是没有调用Onstop的方法;而只有当我们从(C)activity登入到其他的activity时,(A)activity才会调用OnStop()停止;
    • 当进入(C)activity,然后按返回按钮时,(C)activity会调用Onpause()方法暂停,然后上一个activity这里是(A)activity就会调用OnResume()函数;(A)activity界面就出现在我们的面前了,同时(C)activity会调用Onstop>>OnDestroy()函数,进行销毁;(这里点击(A)activity界面也是一样)
    • 另外:当activity调用了Onpause()进入暂停阶段时;如果内存不足时,程序会被杀死,也就是销毁;

    二.构成生命周期的几个函数:

  • 相关阅读:
    go golang 代码记录
    ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVED SIGNAL 15
    hbase启动之后master和regionserver相继自动断掉
    Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate
    虚拟机中二次安装cdh重新启动hadoop集群报错
    cdh在虚拟机中二次安装时无法选择之前管理的主机
    sqoop生成与关系数据库表结构对应的hive表结构,但在hive却找不到table
    Sqoop将hive数据导出到MySQL中文乱码了怎么办?
    idea通过maven打jar包不成功或无法加载主类或打成功也找不到jar包
    一个牛公司的关于oracle数据的面试题
  • 原文地址:https://www.cnblogs.com/hesi/p/5737371.html
Copyright © 2020-2023  润新知